fabric是一个python库,可以通过SSh在多个host上批量执行任务,使用者可以自己编写任务脚本,然后通过fabric在本地就可以使用SSH在大量远程服务器上自动执行,非常适合应用的自动化部署和执行系统管理任务。
这里简单介绍下使用fabric跳过跳板机在远程执行命令。
目标:跨越跳板机远程执行命令并返回执行结果
fanbric:1.14.0 os:centos7 python:2.7
跳板机ip:192.168.17.131 目标机ip:192.168.17.130
1)centos7自带python2.7,使用如下命令安装fabric:
yum install -y fabric #默认安装的是1.14.0版本
2)编写脚本如下(文件名必须是fabfile.py):
from fabric.api import env,run
import time
env.gateway = 'root@192.168.17.131'
env.hosts = ['root@192.168.17.130']
env.shell = "/bin/ash -c"
env.passwords = {
'root@192.168.17.131:22':'123456',
'root@192.168.17.130:22':'root'
}
def test():
while 1:
time.sleep(1.5)
try:
ret=run('ls /tmp')
print dir(ret)
print ret.succeeded
print ret.return_code
print ret
except SystemExit:
print 'SystemExit!!!!!'
pass
该脚本主要功能是通过跳板机131在130上循环执行‘ls /tmp’命令。
env.gateway 用来指定跳板机ip;
env.hosts用来指定远程目标机,可以指定多个,如['root@192.168.17.130','root@192.168.17.132'];
env.passwords用来指定跳板机和目标机的密码信息;
run函数主要用来指定具体在远程执行的命令
3)执行该脚本:
安装完fabric后系统中会有fab命令,使用该命令可以直接使用fabric执行python脚本,需要注意的是参数不是py结尾的文件而是具体的函数名称:
fab test
脚本执行结果:
结束!