简介

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的更多相关文章

  1. Func常用模块及API

    Func常用模块及API Func提供了非常丰富的功能模块,包括: CommandModule(执行命令) CopyFileModule(拷贝文件) CpuModule(CPU信息) DiskModu ...

  2. Saltstack系列3:Saltstack常用模块及API

    说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现 ...

  3. Saltstack常用模块及API

    Saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能.常用工具支持等,更多模块信息可以查看官网模块介绍.也可以通过sys模块列出当前版本支持的模块. salt '*' sys.list_ ...

  4. Ansible常用模块及API

    Ansible安装 安装EPEL作为安装Ansible的yum源(CentOS6.4): rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel ...

  5. salt常用模块及API

    saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能,常用工具支持等,更多模块信息见官网模块介绍:https://docs.saltstack.com/en/latest/ref/mod ...

  6. ansible学习系列2-ansible常用模块使用

    1. 查看支持的模块 [root@localhost ~]# ansible-doc -l 这里我们看下ansible的支持的模块个数 [root@localhost ~]# ansible-doc ...

  7. python常用模块集合

    python常用模块集合 Python自定义模块 python collections模块/系列 Python 常用模块-json/pickle序列化/反序列化 python 常用模块os系统接口 p ...

  8. Saltstack 常用的模块及API

    Saltstack提供了非常丰富的功能模块,设计操作系统的基础功能,常用工具支持等, 官网模块介绍 http://docs.saltstack.com/ref/modules/all/index.ht ...

  9. Ansible系列(二):选项和常用模块

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

随机推荐

  1. 六 GPU 并行优化的几种典型策略

    前言 如何对现有的程序进行并行优化,是 GPU 并行编程技术最为关注的实际问题.本文将提供几种优化的思路,为程序并行优化指明道路方向. 优化前准备 首先,要明确优化的目标 - 是要将程序提速 2 倍? ...

  2. 转载 sqlserver 锁的概念

    SQL server共享锁,排他锁,更新锁的使用   上一篇 / 下一篇  2009-11-08 00:29:17 / 个人分类:数据库 查看( 889 ) / 评论( 0 ) / 评分( 0 / 0 ...

  3. 滚动条滚动事件 js

    <div class="xiangxix">                <ul>                    <li class=&qu ...

  4. 浅谈C中的malloc和free

    转自http://bbs.bccn.net/thread-82212-1-1.html非常感谢作者 浅谈C中的malloc和free 在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的 ...

  5. jquery保存用户名和密码到cookie里面

    http://blog.sina.com.cn/s/blog_633ad0ae0101guij.html

  6. 作业 for liao

    AD620 芯片 93 dB min Common-Mode Rejection Ratio (G = 10) 0.28 mV p-p Noise (0.1 Hz to 10 Hz) THEORY O ...

  7. error when loading the sdk 发现了元素 d:skin 开头无效内容 转自http://blog.csdn.net/yueqinglkong/article/details/46340571

    把devices.xml这个文件删除,再把sdk里面tools\lib下的这个文件拷贝到你删除的那个文件夹里,重启eclipse

  8. Objective-c——UI基础开发第八天(QQ聊天界面)

    一.知识点: QQ聊天界面 双模型的使用(dataModel和frameModel) UITextField的使用 通知的使用 拉伸图片的两种方法(slicing/image对象的resizeable ...

  9. 【HAOI2006】【BZOJ1051】【p1233】最受欢迎的牛

    BZOJ难得的水题(其实是HA太弱了) 原题: 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B ...

  10. spring源码学习之:xml标签扩展配置例子

    在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的 时候,会显得非常笨拙.一般的做法会用原生态的方式去解析定义好 ...