一 點睛
Fabric是基於Python(2.5及以上版本)實現的SSH命令行工具,簡化了SSH的應用程序部署及系統管理任務,它提供了系統基礎的操作組件,可以實現本地或遠程shell命令,包括命令執行、文件上傳、下載及 完整執行日誌輸出等功能。Fabric在paramiko的基礎上做了更高一層的封裝,操作起來會更加簡單。
Fabric官網地址爲: http://www.fabfile.org。
二 Fabric的安裝
[root@localhost pymaintain]# pip install fabric==1.8.2
注意:如果要在windows下運行,需要參考下面文章,安裝pycrypto
windows下安裝報錯解決方法
https://blog.csdn.net/qq_38677814/article/details/79437553
三 入門示例
1 代碼
#coding=utf-8
#!/usr/bin/env python
from fabric.api import run
def host_type(): #定義一個任務函數,通過run方法實現遠程執行‘uname -s’命令
run('uname -s')
2 結果
[root@localhost pymaintain]# fab -H 192.168.0.101 host_type
[192.168.0.101] Executing task 'host_type'
[192.168.0.101] run: uname -s
[192.168.0.101] out: Linux
[192.168.0.101] out:
Done.
3 說明
其中,fab命令引用默認文件名爲fabfile.py,如果使用非默認文件 名稱,則需通過“-f”來指定,如:fab -H 192.168.0.101 host_type.py host_type。
如果管理機與目標主機未配置密鑰認證信任, 將會提示輸入目標主機對應賬號登錄密碼。
四 fab的常用參數
fab作爲Fabric程序的命令行入口,提供了豐富的參數調用,命令格式如下:
fab [options] <command>[:arg1,arg2=val2,host=foo,hosts='h1;h2',...]
下面列舉了常用的幾個參數,更多參數可使用fab-help查看。
- -l:顯示定義好的任務函數名;
- -f:指定fab入口文件,默認入口文件名爲fabfile.py;
- -g:指定網關(中轉)設備,比如堡壘機環境,填寫堡壘機IP即可;
- -H:指定目標主機,多臺主機用“,”號分隔;
- -P:以異步並行方式運行多主機任務,默認爲串行運行;
- -R:指定role(角色),以角色名區分不同業務組設備;
- -t:設置設備連接超時時間(秒);
- -T:設置遠程主機命令執行超時時間(秒);
- -w:當命令執行失敗,發出告警,而非默認中止任務。
有時候我們甚至不需要寫一行Python代碼也可以完成遠程操作, 直接使用命令行的形式,例如:
[root@localhost pymaintain]# fab -p 123456 -H 192.168.0.101,192.168.0.120 -- 'uname -s'
[192.168.0.101] Executing task '<remainder>'
[192.168.0.101] run: uname -s
[192.168.0.101] out: Linux
[192.168.0.101] out:
[192.168.0.120] Executing task '<remainder>'
[192.168.0.120] run: uname -s
[192.168.0.120] out: Linux
[192.168.0.120] out:
Done.
Disconnecting from 192.168.0.120... done.
Disconnecting from 192.168.0.101... done.