python三大神器之fabric(2 0新特性)

2022-06-06 09:27:11 字數 3143 閱讀 9004

fabric經常出現在自動化運維領域,批量處理一些運維工作。fabric是在paramiko之上又封裝了一層,操作起來更加簡單易用。

本來只是想寫個部落格記錄一下,然後發現之前寫的**不能執行了,報以下錯誤:no module named 'fabric.api'

traceback (most recent call last):

file

"d:/pycharmprojects/testtool/publish/fabric_sample.py

", line 3, in

from fabric.api import *modulenotfounderror: no module named

'fabric.api

'

通過fabric.connection方法連線伺服器:

conn = fabric.connection(host , user = 'root',port = 22, config = none, geteway = none, connect_kwargs=)

connection引數的含義:

def

__init__

(    self,

host,

#主機ip

user=none, #

使用者名稱    port=none, #

ssh埠,預設是22

config=none, #

登入配置檔案

gateway=none, #

連線閘道器

forward_agent=none, #

是否開啟agent forwarding

connect_timeout=none, #

設定超時

connect_kwargs=none, #

設定 密碼登入connect_kwargs=) 還是 金鑰登入connect_kwargs=

inline_ssh_env=none,

)

下面通過一段**實現在ubuntu上批量安裝docker,順序取走列表中的ip。

import

fabric

defdocker_install():

for host in ['

10.1.4.24',

'10.1.15.154',

'10.1.14.106']:

conn = fabric.connection(host , user = '

root

', connect_kwargs=)

print("

%s:" %host)

conn.run(

"echo y|apt-get remove docker.io")

docker_install()

是不是很簡單,幾行**就解決了~

cnn獲取connetction物件後,有很多屬性方法可以使用,介紹下幾個常用的:

run:                #

執行遠端命令,如:run('uname -a')

cd:

#切換遠端目錄,如:cd('/root'); with conn.cd('/root'):繼承這個狀態

put:

#上傳本地檔案到遠端主機,如:put('/root/test.py','/root/test.py')

get:

#獲取伺服器上檔案,如:get('/root/project/test.log')

sudo:

#sudo方式執行遠端命令,如:sudo('service docker start')

全部屬性:

['

cd', '

clear

', '

client

', '

close

', '

config

', '

connect_kwargs

', '

connect_timeout

', '

create_session

', '

cwd', '

derive_shorthand

', '

forward_agent

', '

forward_local

', '

forward_remote

', '

from_data

', '

from_v1

', '

gateway

', '

get', '

get_gateway

', '

host

', '

is_connected

', '

local

', '

open

', '

open_gateway

', '

original_host

', '

pop', '

popitem

', '

port

', '

prefix

', '

put', '

resolve_connect_kwargs

', '

run', '

setdefault

', '

sftp

', '

ssh_config

', '

sudo

', '

transport

', '

update

', '

user

']

view code

呼叫本地命令:

import

invoke

invoke.run(

'uname -a

')

Python 三大神器

python 中有很多優秀的包,本文主要講一下 pip,virtualenv,fabric 文件 3456 78910 1112 1314 1516 17 安裝,可指定版本號 sudo pip install django 1.6.8 公升級 sudo pip install bpython upg...

python三大神器之virtualenv

pip,virtualenv,fabric通稱為pythoner的三大神器。virtualenv 用來建立乙個虛擬的python環境,乙個專屬於專案的python環境。用virtualenv 來保持乙個乾淨的環境非常有用 測試環境 linux下 通過pip安裝virtualenv pip insta...

python三大神器之pip

pip是一款管理python各類包和庫的工具,非常好用。下文介紹常用的一些命令。安裝 pip install 庫名 也可以指定版本 pip install 庫名 版本 解除安裝 pip uninstall 庫名 公升級 pip install upgrade 庫名 檢視所有第三方庫 pip list...