zoukankan      html  css  js  c++  java
  • Func系列2:常用模块及API

    简介

    Func提供了非常丰富的功能模块,包括CommandModule(执行命令)、CopyFileModule(拷贝文件)、CPUModule(CPU信息)、DiskModule(磁盘信息)、FileTrackerModule(文件跟踪)、IPtablesModule(iptables管理)、MountModule(Mount挂载)、NagiosServerModule(Nagios管理)、NetworkTest(网络测试)、ProcessModule(进程管理)、SysctlModule(sysctl管理)、SNMPModule(SNMP信息)等等。

    命令调用格式:

    func <目标主机> call <module_name(模块名)> <method_name(方法名)> <module_args(模块参数)>

    例:

    func 'test' call command run 'df -h'    #获取test主机磁盘信息

    结果:

    ('wx',
    [0,
    'Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/vg_wx-lv_root
     14G 8.2G 4.7G 64% /
    tmpfs 
    939M 16K 939M 1% /dev/shm
    /dev/sda1 477M 103M 349M 23% /boot
    ',
    ''])

    注:模块命令执行结果以Python元组字符串形式返回,API调用以字典形式返回

    API:

    #! /usr/bin/env python
    # -*-coding:utf-8-*-
    
    import func.overlord.client as func
    
    client = func.Client('test') #test为目标主机,要对所有目标主机进行操作,使用'*'
    result = client.command.run('free -m') #所有模块调用只需要在这里添加即可
    
    print result

    选择目标主机

    Func选择目标主机操作对象支持‘*’与‘?’方式匹配,其中*代表任意多个字符,?代表单个任意字符。多个目标主机用分号(;)隔开

    例:

    func 'SN2013-*-02?' call command run 'uptime'         #SN2013-*-02? 可以匹配SN2013-08-021、SN2013-09-022等

    常用模块详解

    func命令功能参数举例

    查看所有主机uptime,开启5个线程异步运行,超时时间为3秒

    func -t 3 '*' call --forks='5' --async command run 'uptime'

    格式化输出结果,默认格式为Python的元组,给别添加--json或--xml来输出JSON及XML格式

    func -t 3 '*' call --forks='5' --json --async command run 'uptime'

    执行命令模块

    功能:

    CommandModule实现Linux远程命令调用执行

    命令:

    func '*' call command run 'ulimit -a'
    func 'test' call command run 'free -m'

    API:

    client.command.run('free -m')


    文件拷贝功能

    功能:

    CopyFileModule实现主控端向目标主机拷贝文件,类似于scp功能

    命令:

    #格式:
    func '*' copyfile -f 本地文件 --remotepath 远程文件路径
    
    #例:
    func '*' copyfile -f /etc/sysctl.conf --remotepath /tmp/sysctl.conf

    API:

    client.local.copyfile.send('/etc/sysctl.conf','/tmp/sysctl.conf')


    CPU信息模块

    功能:

    CPUModule获取远程主机CPU信息,支持按时间(秒)采样取平均值。

    命令:

    func '*' call cpu usage
    func '*' call cpu usage 10 #取10秒内平均值

    API:

    client.cpu.usage(10)


    磁盘信息模块

    功能:

    DiskModule实现获取远程主机的磁盘分区信息,参数为分区标签,如/data分区

    命令:

    func '*' call disk usage
    func '*' call disk usage /data

    API:

    client.disk.usage('/dev/sda3')

    拷贝远程文件模块

    功能:

    GetFileModule实现拉去远程Linux主机指定文件到主控端目录,不支持命令行模式

    API:

    client.getfile.get('/etc/sysctl.conf','/tmp/')


    iptables管理模块

    功能:

    IPtablesModule实现远程主机iptables配置

    命令:

    func '*' call iptables.port drop_to 53 192.168.0.0/24 udp src #丢弃从本地53端口发给远端192.168.0.0/24网段的包
    func '*' call iptables drop_from 192.168.0.10 #丢弃从192.168.0.10接收到的包

    API:

    client.iptables.port.drop_to(8080,'192.168.0.10','tcp','dst')


    系统硬件信息模块

    功能:

    HardwareModule返回远程主机系统硬件信息

    命令:

    func '*' call hardware info
    func '*' call hardware hal_info

    API:

    client.hardware.info(with_devices=True)
    client.hardware.hal_info()

    系统Mount管理模块

    功能:

    MountModule实现远程主机Linux系统挂载、卸载分区管理

    命令:

    func '*' call mount list #获取远程主机的挂载信息
    func '*' call mount mount /dev/sda3 /data #远程主机将/dev/sda3设备挂载到/data目录
    func '*' call mount umount '/data' #卸载/data目录

    API:

    client.mount.list()
    client.mount.umount('/data')
    client.mount.mount('/dev/sda3','/data')

    系统进程管理模块

    功能:

    ProcessModule实现远程Linux主机进程管理

    命令:

    func '*' call process info 'aux' #获取进程信息,等同于ps aux
    func '*' call process pkill nginx -9 
    func '*' call process kill nginx SIGHUP

    API:

    client.process.info('aux')
    client.process.pkill('nginx','-9')
    client.process.kill('nginx','SIGHUP')


    系统服务管理模块

    功能:

    ServiceModule实现远程Linux主机系统服务管理

    命令:

    func '*' call service start nginx #启动nginx

    API:

    client.service.start('nginx')


    系统内核参数管理模块

    功能:

    SysctlModule实现远程Linux主机系统内核参数管理

    命令:

    func '*' call sysctl list #获取所有内核参数
    func '*' call sysctl get net.nf_conntrack_max #获取内核参数net.nf_conntrack_max
    func '*' call sysctl set net.nf_conntrack_max 15449 #设置内核参数net.nf_conntrack_max

    API:

    client.sysctl.list()
    client.sysctl.get('net.ipv4.icmp_echo_ignore_broadcasts')
    client.sysctl.set('net.ipv4.tcp_syncookies',1)

    参考资料:

    根据刘天斯《Python自动化运维技术与最佳实践》整理

  • 相关阅读:
    接口和抽象类
    TSQL向自增字段中插入值
    字符串驻留备忘
    SQL Like中的逗号分隔符
    TSQL的一点小备忘
    ADO.NET与ADO
    JavaScript Office文档在线编辑备忘
    位运算练习:求多数的大数、二进制数中1的个数
    Vimeo反反复复地重生死亡。
    海底浓烟,低分辨率测试。
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5779468.html
Copyright © 2011-2022 走看看