真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

系統(tǒng)批量運(yùn)維管理paramiko-創(chuàng)新互聯(lián)

paramiko是基于Python實(shí)現(xiàn)的SSH2遠(yuǎn)程安全連接,支持認(rèn)證及密鑰方式??梢詫?shí)現(xiàn)遠(yuǎn)程命令執(zhí)行、文件傳輸、中間SSH代理等功能,相對(duì)于Pexpect,封裝的層次更高,更貼近SSH協(xié)議的功能,官網(wǎng)地址:http://www.paramiko.org

目前創(chuàng)新互聯(lián)建站已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、站前網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

一:核心組件


SSHClient類:

SSHClient類是SSH服務(wù)會(huì)話的高級(jí)表示,該類封裝了傳輸(transport)、通道(channel)及SFTPClient的校驗(yàn)、建立的方法,通常用于執(zhí)行遠(yuǎn)程命令

1 connect方法connect方法實(shí)現(xiàn)了遠(yuǎn)程SSH連接并校驗(yàn)。方法定義:connect(self, hostname, port=22, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False)

參數(shù)說(shuō)明:

  • hostname(str類型),連接的目標(biāo)主機(jī)地址;

  • port(int類型),連接目標(biāo)主機(jī)的端口,默認(rèn)為22;

  • username(str類型),校驗(yàn)的用戶名(默認(rèn)為當(dāng)前的本地用戶名);

  • password(str類型),密碼用于身份校驗(yàn)或解鎖私鑰;

  • pkey(PKey類型),私鑰方式用于身份驗(yàn)證;

  • key_filename(str or list(str)類型),一個(gè)文件名或文件名的列表,用于私鑰的身份驗(yàn)證;

  • timeout(float類型),一個(gè)可選的超時(shí)時(shí)間(以秒為單位)的TCP連接;

  • allow_agent(bool類型),設(shè)置為False時(shí)用于禁用連接到SSH代理;

  • look_for_keys(bool類型),設(shè)置為False時(shí)用來(lái)禁用在~/.ssh中搜索私鑰文件;

  • compress(bool類型),設(shè)置為True時(shí)打開壓縮。


2 exec_command方法遠(yuǎn)程命令執(zhí)行方法,該命令的輸入與輸出流為標(biāo)準(zhǔn)輸入(stdin)、輸出(stdout)、錯(cuò)誤(stderr)的Python文件對(duì)象


  遠(yuǎn)程命令執(zhí)行方法,該命令的輸入與輸出流為標(biāo)準(zhǔn)輸入(stdin)、輸出(stdout)、錯(cuò)誤(stderr)的Python文件對(duì)象

參數(shù)說(shuō)明:

  • command(str類型),執(zhí)行的命令串;

  • bufsize(int類型),文件緩沖區(qū)大小,默認(rèn)為-1(不限制)


3. load_system_host_keys方法

  加載本地公鑰校驗(yàn)文件,默認(rèn)為~/.ssh/known_hosts,非默認(rèn)路徑需要手工指定,方法定義:load_system_host_keys(self,filename=None)參數(shù)說(shuō)明:filename(str類型),指定遠(yuǎn)程主機(jī)公鑰記錄文件。

4. set_missing_host_key_policy方法設(shè)置連接的遠(yuǎn)程主機(jī)沒有本地主機(jī)密鑰或HostKeys對(duì)象時(shí)的策略,目前支持三種,分別是AutoAddPolicy、RejectPolicy(默認(rèn))、Warning-Policy,僅限用于SSHClient類,分別代表的含義如下:

  • AutoAddPolicy,自動(dòng)添加主機(jī)名及主機(jī)密鑰到本地HostKeys對(duì)象,并將其保存,不依賴load_system_host_keys()的配置,即使~/.ssh/known_hosts不存在也不產(chǎn)生影響;

  • RejectPolicy,自動(dòng)拒絕未知的主機(jī)名和密鑰,依賴load_system_host_keys()的配置;

  • WarningPolicy,用于記錄一個(gè)未知的主機(jī)密鑰的Python警告,并接受它,功能上與Au-toAddPolicy相似,但未知主機(jī)會(huì)有告警。


下面介紹一個(gè)簡(jiǎn)單實(shí)現(xiàn)遠(yuǎn)程SSH運(yùn)行命令的示例。該示例使用密碼認(rèn)證方式,通過exec_com-mand()方法執(zhí)行命令,詳細(xì)源碼如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import paramiko
hostname="18.16.200.191"
username="root"
password="shitouit@2017"
paramiko.util.log_to_file('syslogin.log')

ssh = paramiko.SSHClient()
#ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())      #設(shè)置連接的遠(yuǎn)程主機(jī)沒有本地主機(jī)密鑰或HostKeys對(duì)象時(shí)的策略,AutoAddPolicy,自動(dòng)添加主機(jī)名及主機(jī)密鑰到本地HostKeys對(duì)象,并將其保存,不依賴load_system_host_keys()的配置,即使~/.ssh/known_hosts不存在也不產(chǎn)生影響
ssh.connect(hostname=hostname,username=username,password=password)

stdin,stdout,stderr=ssh.exec_command('free -m')
print stdout.read()
ssh.close()

程序執(zhí)行結(jié)果截圖如下:


系統(tǒng)批量運(yùn)維管理paramiko

SFTPClient類:

  SFTPClient作為一個(gè)SFTP客戶端對(duì)象,根據(jù)SSH傳輸協(xié)議的sftp會(huì)話,實(shí)現(xiàn)遠(yuǎn)程文件操作,比如文件上傳、下載、權(quán)限、狀態(tài)等操作

1. from_transport方法

  創(chuàng)建一個(gè)已連通的SFTP客戶端通道,方法定義:from_transport(cls, t)

  參數(shù)說(shuō)明:t(Transport),一個(gè)已通過驗(yàn)證的傳輸對(duì)象

2. put方法

  上傳本地文件到遠(yuǎn)程SFTP服務(wù)端,方法定義:put(self, localpath, remotepath, callback=None, confirm=True)

  參數(shù)說(shuō)明:

  localpath(str類型),需上傳的本地文件(源);

  remotepath(str類型),遠(yuǎn)程路徑(目標(biāo));

  callback(function(int, int)),獲取已接收的字節(jié)數(shù)及總傳輸字節(jié)數(shù),以便回調(diào)函數(shù)調(diào)用,默認(rèn)為None;  confirm(bool類型),文件上傳完畢后是否調(diào)用stat()方法,以便確認(rèn)文件的大小。

3. get方法

  從遠(yuǎn)程SFTP服務(wù)端下載文件到本地,方法定義:get(self, remotepath, localpath, callback=None)

  參數(shù)說(shuō)明:

  remotepath(str類型),需下載的遠(yuǎn)程文件(源);

  localpath(str類型),本地路徑(目標(biāo));

  callback(function(int, int)),獲取已接收的字節(jié)數(shù)及總傳輸字節(jié)數(shù),以便回調(diào)函數(shù)調(diào)用,默認(rèn)為None。

4. 其他方法

  SFTPClient類其他常用方法說(shuō)明:

  Mkdir,在SFTP服務(wù)器端創(chuàng)建目錄,如sftp.mkdir("/home/userdir",0755)。

  remove,刪除SFTP服務(wù)器端指定目錄,如sftp.remove("/home/userdir")。

  rename,重命名SFTP服務(wù)器端文件或目錄,如sftp.rename("/home/test.sh","/home/testfile.sh")。

  stat,獲取遠(yuǎn)程SFTP服務(wù)器端指定文件信息,如sftp.stat("/home/testfile.sh")。

  listdir,獲取遠(yuǎn)程SFTP服務(wù)器端指定目錄列表,以Python的列表(List)形式返回,如sftp.listdir("/home")。

下面為SFTPClient類的一個(gè)完整示例,實(shí)現(xiàn)了文件上傳、下載、創(chuàng)建與刪除目錄等,需要注意的是,put和get方法需要指定文件名:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import paramiko
hostname="18.16.200.191"
username="root"
password="shitouit@2017"
port=22

try:
    t=paramiko.Transport((hostname, port))
    t.connect(username=username,password=password)
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.put('/root/anaconda-ks.cfg','/data/anaconda-ks.cfg')           #上傳文件
    sftp.get('/root/harbor-online-installer-v1.5.2.tgz','/root/harbor-online-installer-v1.5.2.tgz')    #下載文件
    sftp.mkdir('/data/parami',0755)
    sftp.rmdir('/data/parami')
    sftp.rename('/root/1.sh','/root/2.sh')
    print sftp.stat('/root/2.sh')
    print sftp.listdir('/data/')
    t.close()
except Exception, e:
    print str(e)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


本文標(biāo)題:系統(tǒng)批量運(yùn)維管理paramiko-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://weahome.cn/article/cscjoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部