fabric执行服务器命令
fabric最重要的功能是可以执行远程机器的命令,例如执行远程命令,发布程序。
可能有的同学会说,登录远程服务器,执行命令,也可以啊?是可以的,但是如果经常这样做,很麻烦,因为,不能自动化,而且需要每次都点击界面去连接远程服务器,其实是很繁琐的。
通过run命令,可以执行远程方法,首先需要导入from fabric.api import run这个库。
run.py
#!/usr/bin/env python # -*- coding:utf-8 -*- from fabric.api import run #定义一个任务函数,通过run方法实现远程执行‘uname -s’命令 def host_type(): run('uname -s')
执行:
fab -f run.py host_type
由于是要在远程执行命令,fab发现文件中有run函数后,会试图连接远程服务器,如果无法连接,会提示你输入远程服务器的地址,用户名,密码,如下:
No hosts found. Please specify (single) host string for connection:
配置远程主机用户名,密码
你需要输入用户名、密码才行,比价麻烦,所以,可以把远程机器的信息写在文件里,如下:
run2.py
#!/usr/bin/env python # -*- coding:utf-8 -*- from fabric.api import * env.user = 'root' env.hosts = ['118.100.100.2'] env.port = '22' env.password = 'abc123' #定义一个任务函数,通过run方法实现远程执行‘uname -s’命令 def host_type(): run('uname -s')
将用户名,密码等放在env环境变量中,这样当运行run的时候,就可以用这个用户名,密码登录了。
执行
fab -f run2.py host_type
执行结果
[192.168.196.142] run: uname -s [192.168.196.142] out: Linux [192.168.196.142] out: Done. Disconnecting from 192.168.196.142:224... done.
注意,如果上面的密码错误,程序会提示你继续输入正确的密码,非常人性化。
##