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\n/dev/mapper/vg_wx-lv_root\n 14G 8.2G 4.7G 64% /\ntmpfs
939M 16K 939M 1% /dev/shm\n/dev/sda1 477M 103M 349M 23% /boot\n',
''])
注:模块命令执行结果以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='' --async command run 'uptime'
格式化输出结果,默认格式为Python的元组,给别添加--json或--xml来输出JSON及XML格式
func -t 3 '*' call --forks='' --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自动化运维技术与最佳实践》整理
Func系列2:常用模块及API的更多相关文章
- Func常用模块及API
Func常用模块及API Func提供了非常丰富的功能模块,包括: CommandModule(执行命令) CopyFileModule(拷贝文件) CpuModule(CPU信息) DiskModu ...
- Saltstack系列3:Saltstack常用模块及API
说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现 ...
- Saltstack常用模块及API
Saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能.常用工具支持等,更多模块信息可以查看官网模块介绍.也可以通过sys模块列出当前版本支持的模块. salt '*' sys.list_ ...
- Ansible常用模块及API
Ansible安装 安装EPEL作为安装Ansible的yum源(CentOS6.4): rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel ...
- salt常用模块及API
saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能,常用工具支持等,更多模块信息见官网模块介绍:https://docs.saltstack.com/en/latest/ref/mod ...
- ansible学习系列2-ansible常用模块使用
1. 查看支持的模块 [root@localhost ~]# ansible-doc -l 这里我们看下ansible的支持的模块个数 [root@localhost ~]# ansible-doc ...
- python常用模块集合
python常用模块集合 Python自定义模块 python collections模块/系列 Python 常用模块-json/pickle序列化/反序列化 python 常用模块os系统接口 p ...
- Saltstack 常用的模块及API
Saltstack提供了非常丰富的功能模块,设计操作系统的基础功能,常用工具支持等, 官网模块介绍 http://docs.saltstack.com/ref/modules/all/index.ht ...
- Ansible系列(二):选项和常用模块
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
随机推荐
- R编程感悟
虽然大学阶段曾经学过C++, matlab等编程,但是真的几乎完全还给了老师- 所以,我一直将R 作为自己真正学习的第一门语言.我从2012年初在来美国的第二个rotation中开始接触到了R.当时不 ...
- left join测试验证之一
$ sqlite3 a.dbSQLite version 3.8.1 2013-10-17 12:57:35Enter ".help" for instructionsEnter ...
- DataTransfer(setData()方法)
DataTransfer对象专门用来存储拖放时要携带的数据,它可以被设置为拖放事件对象的DataTransfer属性.---把拖动的数据存入其中setData有两个参数:1.第一个参数为携带数据的数据 ...
- JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能
一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...
- 4-2 光盘yum源搭建
yum源默认是用网络作为yum源,在一些特殊情况下,比如教学.实验室等,不是所有的环境都可以联网 这种不能使用网络的情况下,可以使用光盘搭建yum源 我们知道,光盘包含了所有的rpm包,因此使用光盘搭 ...
- linux之使用cron,logrotate管理日志文件
1) logrotate配置 logrotate 程序是一个日志文件管理工具.用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”. 我们可以根据日志文件的大小,也可以根据其天数来 ...
- mysql优化参数thread_cache_size
thread_cache_size功能在mysql数据库配置文件中是非常重要的一项功能了,如果对thread_cache_size优化做得好我们可以让服务器跑得非常快,设置不好就会发现很小访问量就非常 ...
- 【P1373】奶牛的卧室
看山神的题解写出来的,sro_dydxh_orz 原题:奶牛们有一个习惯,那就是根据自己的编号选择床号.如果一头奶牛编号是a,并且有0..k-1一共k张床,那么她就会选择a mod k号床作为她睡 ...
- 磁盘分区、格式化、挂载[转自vbird]
磁盘分区.格式化.挂载磁盘分区 新增分区 查询分区 删除分区磁盘格式化 mkfs mke2fs磁盘挂载与卸载 mount umount 磁盘的分区.格式化.挂 ...
- ps调整图层
自然饱和度:自然饱和度命令和色相饱和度命令里的饱和度相比最大的区别是自然饱和度只增加未达到饱和的颜色的饱和度,而饱和度命令则增加整个图像的饱和度,可能会导致图像颜色过于饱和,而自然饱和度不会出现这种问 ...