使用fabric测试服务器环境。

envassert的Python项目详细描述


使用fabric测试服务器环境。

要求

  • python 2.6或更高版本
  • 面料

如何使用

  1. 安装

    % pip install envassert
    
  2. 写fabfile.py。

    from fabric.api import env, task
    from envassert import file, process, package, user, group, port, cron, detect
    
    env.use_ssh_config = True
    
    @task
    def check():
        env.platform_family = detect.detect()
    
        assert file.exists("/etc/hosts")
        assert file.is_file("/etc/hosts")
        assert file.is_dir("/tmp/")
        assert file.dir_exists("/tmp/")
        assert file.has_line("/etc/passwd", "sshd")
        assert file.owner_is("/bin/sh", "root")
        assert file.group_is("/bin/sh", "root")
        assert file.mode_is("/bin/sh", "777")
    
        if env.platform_family == "freebsd":
            assert file.is_link("/compat")
        else:
            assert file.is_link("/usr/tmp")
    
        assert package.installed("wget.x86_64")
    
        assert user.exists("sshd")
        assert user.is_belonging_group("shirou", "users")
        assert group.exists("wheel")
    
        assert port.is_listening(22)
        assert port.is_listening(80, "tcp")
    
        assert process.is_up("http") is False
        assert service.is_enabled("httpd")
    
        assert cron.has_entry('shirou', 'python')
    
        assert filesystem.is_type('ext4', '/')
    
  3. 运行fab

    % fab -H somehost check
    [somehost] Executing task 'check'
    
    Done.
    Disconnecting from root@192.168.22.98... done.
    

    您可以使用任何其他fabric参数,如hosts或parallel。

检测操作系统

detect.detect()函数可以检测目标操作系统和 分配。将此变量设置为env.platform_family, 函数可以根据该值进行调度。

此函数是Ohai的最小端口。

目前,可以检测到这些平台。(但尚未测试)

  • RHEL(Redhat、CentOS、Oracle、Scientific、EnterpriseeEnterprise、Amazon)
  • debian(debian,ubuntu,linuxmint,raspbian)
  • 软呢帽
  • 苏西
  • 格图
  • 拱门
  • FreeBSD
  • 上网本
  • openbsd
  • 达尔文

但是,并不是所有的功能都可以实现 站台。欢迎拉取请求。

这项工作所依靠的巨人们

许可证

麻省理工学院许可证

仅供参考

  • 美食:BSD
  • 服务器规格:MIT
  • Ohai:Apache2

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在没有代码气味的情况下编写遵循Liskov替代和其他可靠原则的不可变映射?   java最新jre上的压缩字符串对旧编译代码有好处吗?   java是否可以在javascript中取消PrimeFaces menuitem onclick函数   mysql从SQL数据库中访问java中xml名称空间标记的值   从java程序打开excel文件   java在方法中使用“var”是否会使执行(并发)线程不安全?   java使搜索视图以一种关于AndroidManifest的通用方式可用。xml   java对如何准确使用正则表达式感到困惑?   mule如何访问java文件中的记录变量   java在从2D数组引发异常后继续   枚举当前设置为的java值   java当listview只有几个项目时,如何使alert对话框显示listview的所有项目?   java getTableRow()返回大于项大小的索引   c用java传输二进制文件(数据)   java更改多选列表项复选框颜色