码迷,mamicode.com
首页 > Windows程序 > 详细

Func系列2:常用模块及API

时间:2016-08-17 13:51:38      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

简介

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=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自动化运维技术与最佳实践》整理

Func系列2:常用模块及API

标签:

原文地址:http://www.cnblogs.com/MacoLee/p/5779468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!