paramiko模塊安裝和使用(遠(yuǎn)程登錄服務(wù)器)
一:簡(jiǎn)介
由paramiko是用python語(yǔ)言寫(xiě)的一個(gè)模塊,遵循SSH2協(xié)議,支持以加密和認(rèn)證的方式,進(jìn)行遠(yuǎn)程服務(wù)器的連接。
由于使用的是python這樣的能夠跨平臺(tái)運(yùn)行的語(yǔ)言,所以所有python支持的平臺(tái),如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH從一個(gè)平臺(tái)連接到另外一個(gè)平臺(tái),進(jìn)行一系列的操作時(shí),paramiko是最佳工具之一。
舉個(gè)常見(jiàn)的例子,現(xiàn)有這樣的需求:需要使用windows客戶端,遠(yuǎn)程連接到Linux服務(wù)器,查看上面的日志狀態(tài),大家通常使用的方法會(huì)是:
1:用telnet
2:用PUTTY
3:用WinSCP
4:用XManager等…
那現(xiàn)在如果需求又增加一條,要從服務(wù)器上下載文件,該怎么辦?那常用的辦法可能會(huì)是:
1:Linux上安裝FTP并配置
2:Linux上安裝Sambe并配置…
大家會(huì)發(fā)現(xiàn),常見(jiàn)的解決方法都會(huì)需要對(duì)遠(yuǎn)程服務(wù)器必要的配置,如果遠(yuǎn)程服務(wù)器只有一兩臺(tái)還好說(shuō),如果有N臺(tái),還需要逐臺(tái)進(jìn)行配置,或者需要使用代碼進(jìn)行以上操作時(shí),上面的辦法就不太方便了。
使用paramiko可以很好的解決以上問(wèn)題,比起前面的方法,它僅需要在本地上安裝相應(yīng)的軟件(python以及PyCrypto),對(duì)遠(yuǎn)程服務(wù)器沒(méi)有配置要求,對(duì)于連接多臺(tái)服務(wù)器,進(jìn)行復(fù)雜的連接操作特別有幫助。
二:安裝
安裝paramiko有兩個(gè)先決條件,python和另外一個(gè)名為PyCrypto的模塊。
通常安裝標(biāo)準(zhǔn)的python模塊,只需要在模塊的根目錄下運(yùn)行:
python setup.py build
python setup.py install
以上兩條命令即可,paramiko和PyCrypto也不例外,唯一麻煩的就是安裝PyCrypto時(shí),需要GCC庫(kù)編譯,如果沒(méi)有GCC庫(kù)會(huì)報(bào)錯(cuò),會(huì)導(dǎo)致PyCrypto以及paramiko無(wú)法安裝。
以下以32 位的windows XP為例,說(shuō)明paramiko的安裝過(guò)程
1:安裝python,2.2以上版本都可以,我使用的是2.5,安裝過(guò)程略,并假設(shè)安裝目錄是c:\python。
2:判斷本地是否安裝了GCC,并在PATH變量可以找到,如果沒(méi)有,可使用windows 版的GCC,即MinGW,下載地址:http://sourceforge.net/projects/mingw/,然后運(yùn)行下載后的exe文件進(jìn)行網(wǎng)絡(luò)安裝,假設(shè)目錄為C:\mingw,在PATH中加入 C:\mingw\bin,并在c:\python\lib\distutils下新建一個(gè)名稱是distutils.cfg的文件,填入:
[build]
compiler=mingw32
3:下載PyCrypto ,地址是
https://www.dlitz.net/software/pycrypto/
安裝PyCrypto:
解壓縮
在dos下進(jìn)入解壓縮的目錄,運(yùn)行
C:\python\python.exe setup.py build
C:\python\python.exe setup.py install
安裝測(cè)試
運(yùn)行python.exe,在提示符下輸入:
Import Crypto
如果沒(méi)有出現(xiàn)錯(cuò)誤提示,說(shuō)明Crypto安裝成功
4:下載paramiko,地址是http://www.lag.net/paramiko/
解壓縮
在dos下進(jìn) 入解壓縮的目錄,運(yùn)行
C:\python\python.exe setup.py build
C:\python\python.exe setup.py install
測(cè)試paramiko
運(yùn)行python.exe,在提示符下輸入:
Import paramiko
如果沒(méi)有出現(xiàn)錯(cuò)誤提示,說(shuō)明paramiko安裝成功
三: 使用paramiko
如果大家感覺(jué)安裝paramiko還是略有麻煩的話,當(dāng)使用到paramiko提供的方便時(shí)便會(huì)覺(jué)得這是十分值得的。
下面是兩種使用paramiko連接到linux服務(wù)器的代碼
方式一:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用戶名", "口令")
上面的第二行代碼的作用是允許連接不在know_hosts文件中的主機(jī)。
方式二:
t = paramiko.Transport((“主機(jī)”,”端口”))
t.connect(username = “用戶名”, password = “口令”)
如果連接遠(yuǎn)程主機(jī)需要提供密鑰,上面第二行代碼可改成:
t.connect(username = “用戶名”, password = “口令”, hostkey=”密鑰”)
下面給出實(shí)際的例子:
3.1 windows對(duì)linux運(yùn)行任意命令,并將結(jié)果輸出
如果linux服務(wù)器開(kāi)放了22端口,在windows端,我們可以使用paramiko遠(yuǎn)程連接到該服務(wù)器,并執(zhí)行任意命令,然后通過(guò) print或其它方式得到該結(jié)果,
#!/usr/bin/python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用戶名", "口令")
stdin, stdout, stderr = ssh.exec_command("你的命令")
print stdout.readlines()
ssh.close()
其中的”你的命令”可以任意linux支持的命令,如一些常用的命令:
df:查看磁盤(pán)使用情況
uptime:顯示系統(tǒng)運(yùn)行時(shí)間信息
cat:顯示某文件內(nèi)容
mv/cp/mkdir/rmdir:對(duì)文件或目錄進(jìn)行操作
/sbin/service/ xxxservice start/stop/restart:?jiǎn)?dòng)、停止、重啟某服務(wù)
netstat -ntl |grep 8080:查看8080端口的使用情況
或者 nc -zv localhost :查看所有端口的使用情況
find / -name XXX:查找某文件
這樣一來(lái),對(duì)于linux的任何操作幾乎都可以通過(guò)windows端完成,如果對(duì)該功能進(jìn)行引申,還可以同時(shí)管理多臺(tái)服務(wù)器。
3.2 從widnows端下載linux服務(wù)器上的文件
#!/usr/bin/python
import paramiko
t = paramiko.Transport((“主機(jī)”,”端口”))
t.connect(username = “用戶名”, password = “口令”)
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/var/log/system.log'
localpath='/tmp/system.log'
sftp.get(remotepath, localpath)
t.close()
3.3 從widnows端上傳文件到linux服務(wù)器
#!/usr/bin/python
import paramiko
t = paramiko.Transport((“主機(jī)”,”端口”))
t.connect(username = “用戶名”, password = “口令”)
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/var/log/system.log'
localpath='/tmp/system.log'
sftp.put(localpath,remotepath)
t.close()
相關(guān)文章
python裝飾器實(shí)現(xiàn)對(duì)異常代碼出現(xiàn)進(jìn)行自動(dòng)監(jiān)控的實(shí)現(xiàn)方法
這篇文章主要介紹了python裝飾器實(shí)現(xiàn)對(duì)異常代碼出現(xiàn)進(jìn)行自動(dòng)監(jiān)控的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
python中is與雙等于號(hào)“==”的區(qū)別示例詳解
Python中有很多運(yùn)算符,下面這篇文章主要給大家介紹了關(guān)于python中is與雙等于號(hào)“==”區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
django models里數(shù)據(jù)表插入數(shù)據(jù)id自增操作
這篇文章主要介紹了django models里數(shù)據(jù)表插入數(shù)據(jù)id自增操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python靜態(tài)類型檢查新工具之pyright 使用指南
這篇文章主要介紹了Python靜態(tài)類型檢查新工具之pyright 使用指南,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
python33 urllib2使用方法細(xì)節(jié)講解
Python 標(biāo)準(zhǔn)庫(kù)中有很多實(shí)用的工具類,這里總結(jié)一些 urllib2 的使用細(xì)節(jié):Proxy 的設(shè)置、Timeout 設(shè)置、在 HTTP Request 中加入特定的 、Cookie、使用 HTTP 的 PUT 和 DELETE 方法2013-12-12
Jupyter Notebook的連接密碼 token查詢方式
這篇文章主要介紹了Jupyter Notebook的連接密碼 token查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04

