Python 自動化部署神器fabric2

2021-10-02 04:21:31 字數 2422 閱讀 7088

fabric2 是乙個python(2.7,3.4+)的庫,用來通過ssh遠端執行shell命令,並返回有用的python物件。

它建立在 invoke 和 paramiko 庫之上,同時擴充套件了他們的api以提供更多的功能。

1.安裝

pip uninstall fabric

pip uninstall fabric3

pip install fabric2

2.connection類

實現對單個主機的ssh連線,返回乙個該主機的連線物件。通過該物件,對主機進行操作和管理。

類的屬性:

host:主機名或ip位址,可用格式:user@host, host:port, user@host:port

user:登入使用者名稱

port:(

int)登入埠

config:登入配置檔案

gateway:連線的閘道器或**

forword_agent:

(bool

)是否開啟agent_forwording

connect_timeout:

(int

)連線超時時間

connect_kwargs:(

dict

)提交連線引數的字典,多用於密碼,金鑰等。

inline_ssh_env:

(bool

)略

類的方法:

run:執行命令,返回結果的屬性有 stdout,exited,ok,command,connection 等

put:上傳檔案,put(src_path, remote= dst_path)

sudo:sudo遠端執行命令

sftp:返回乙個sftp物件

local:在本地執行shell命令

open

open_gateway

close

create_session

forward_local

forward_remote

例子

from fabric import connection

ssh_conn = connection(host=

'***.***.***.***'

, user=

'root'

, connect_kwargs=

)

3.group類

連線多個伺服器,組成乙個group,乙個group同時執行run命令時,會返回乙個 groupresult-dict,包含了每個伺服器的執行結果。

例子:

from fabric import serialgroup as group

hosts =

("[email protected]:22"

,"[email protected]:22"

)pool = group(

*hosts,connect_kwargs=

)results = pool.run(

'uname -s'

)for connection, result in results.items():

print

(": "

.format

(connection, result)

)

4.自動響應程式的輸出

比如執行sudo命令時,會要求輸入**,此時如果手動輸入則顯得很笨拙,fabric提供了自動響應輸入請求的功能:

from invoke import responder

from fabric import connection

c = connection(

'host'

)passwd = "1234

sudopass = responder(

pattern=r'\[sudo\] password:'

, response=

'\n'

,format

(passwd = passwd),)

c.run(

'sudo whoami'

, pty=

true

, watchers=

[sudopass]

)

5.將功能封裝成函式

def

upload_and_unpack

(ssh_conn )

: c.put(

'myfiles.tgz'

,'/opt/mydata'

) c.run(

'tar -c /opt/mydata -xzvf /opt/mydata/myfiles.tgz'

)

部署python自動化指令碼 搭建自動化指令碼執行環境

年前把平台的指令碼寫好了,準備在虛擬機器中全部執行一遍。沒想到在虛擬機器中配置了很長時間,才把環境搭好。為了不再犯這配置環境的苦,在這簡單說說環境的搭建吧。因為寫的指令碼是在win7上實現的,所以虛擬機器我安裝的也是win7系統。1 安裝python 2 配置環境變數 python安裝成功後,將安裝...

mysql自動化部署方案 什麼是自動化部署?

自動化部署將可交付產品,快速且安全地交付使用者使用的一套系統和工具。系統會自動構建 測試並準備 變更,以便將其發布到指定環境的過程,包括開發環境 預發布環境 生產環境等。自動化部署工具介紹 簡要介紹 該工具是資料庫自動化部署調優工具,支援mysql 8.0.17 8.0.18和postgresql ...

自動化部署job

bin sh the discription of start.sh echo e the script function 1 deploy the tomcat server if files exist.echo e 2 restart the tomcat server if files no...