Func常用模块及API
- Func提供了非常丰富的功能模块,包括:
CommandModule(执行命令)
CopyFileModule(拷贝文件)
CpuModule(CPU信息)
DiskModule(磁盘信息)
FileTrackerModule(文件跟踪)
IPtablesModule(iptables管理)
MountModule(Mount挂载)
NagiosServerModule(Nagios管理)
NetWorkTest(网络测试)
ProcessModule(进程管理)
SysctlModule(sysctl管理)
SNMPModule(SNMP信息管理)等等:
更多模块见:https://fedoraproject.org/wiki/Infrastructure/Fedorahosted-retirement
命令行调用模块格式:
Func<目标主机>call<Module_name(模块名)><method_name(方法名)><module_args(模块参数)>
例如运行“df –m”查看被控端内存,如:
[[email protected] ~]# func compute call command run "df -m"
(‘compute‘,
[0,
‘Filesystem 1M-blocks Used Available Use% Mounted on\n/dev/mapper/centos-root 459828 2131 457697 1% /\ndevtmpfs 3861 0 3861 0% /dev\ntmpfs 3871 0 3871 0% /dev/shm\ntmpfs 3871 57 3815 2% /run\ntmpfs 3871 0 3871 0% /sys/fs/cgroup\n/dev/sda1 494 184 311 38% /boot\ntmpfs 775 0 775 0% /run/user/0\n‘,
‘‘])
注: [[email protected] ~]# func "*" call command run "df -m" 单独“*”为所有被控制端
[[email protected] ~]# func "com*ute?" call command run "df -m" 这里“*”代表任意多个字符。“?”代表单个任意字符
func "compute1;compute2" call command run "df -m" 多个目标主机使用分号分隔
- 常用模块详解
1、 执行命令模块
(1) 功能
CommandModule实现linux远程命令调用执行
(2) 命令行模式
[[email protected] ~]# func "*" call command run "uname -a"
(3) API模式
[[email protected] ~]# cat funcommand.py
#!/usr/bin/python
import func.overlord.client as func
client = func.Client("*")
print client.command.run("free -m")
[[email protected] ~]# python funcommand.py
{‘compute‘: [0, ‘ total used free shared buff/cache available\nMem: 7741 700 6356 56 684 6669\nSwap: 16383 0 16383\n‘, ‘‘]}
2、 文件拷贝模块
a) 功能
CopyFileModule实现主控端向目标主机拷贝文件,类似scp的功能
b) 命令行模式
[[email protected] ~]# func "*" copyfile -f /root/start.sh --remotepath /root/start.sh
c) API模式
[[email protected] ~]# cat funccopyfile.py
#!/usr/bin/python
import func.overlord.client as func
client = func.Client("*")
client.local.copyfile.send("/root/start.sh","/tmp/start.sh")
- CPU信息模块
1、 功能
Cpumodule获取远程主机cpu信息,支持按时间(秒)采样平均值,如下面示例的参数‘10’
2、 命令模式
[[email protected] ~]# func "*" call cpu usage 10
3、 API模式
print client.cpu.usage(10)
- 磁盘信息模块
1、 功能
DiskModule实现获取远程主机的磁盘分区信息,参数为分区标签,如/data分区。
2、 命令模式
[[email protected] ~]# func "*" call cpu usage 10
3、 API模式
print client.cpu.usage(10)
- 拷贝远程文件模块
1、 功能
GetFileModul实现拉取远程Linux主机指定文件到主控端目录,不支持命令行模式。
2、 API模式
client.local.getfile.get("/root/a.txt","/tmp/")
- Iptables管理模块
1、 功能
IPtables实现远程主机iptables配置。
2、 命令行模式
[[email protected] ~]# func "*" call iptables.port drop_to 53 192.168.128.0/24 udp src
3、 API模式
client.iptables.port.drop_to(8080,"192.168.128.55","tcp","dst")
- 系统硬件信息模块
1、 功能
HardwareModule返回远程主机系统硬件信息。
2、 命令行模式
[[email protected] ~]# func "*" call iptables.port drop_to 53 192.168.128.0/24 udp src
3、 API模式
print client.hardware.info(with_devices=True)
print client.hardware.hal_info()
- 系统Mount管理模块
1、 功能
MountModule实现远程主机Linux系统挂载、卸载分区管理。
2、 命令行模式
[[email protected] ~]# func "*" call mount list
3、 API模式
print client.mount.list()
- 系统进程管理模块
1、 功能
ProcessModule实现远程主机Linux进程管理。
2、 命令行模式
[[email protected] ~]# func "*" call process info "aux"
3、 API模式
print client.process.info("aux")
- 系统服务管理模块
4、 功能
servicesModule实现远程主机Linux系统服务管理。
5、 命令行模式
[[email protected] ~]# func "*" call service start snmpd
6、 API模式
print client.service.start("nginx")