paramiko模組安裝和使用(遠程登入伺服器)_python

來源:互聯網
上載者:User

一:簡介

由paramiko是用python語言寫的一個模組,遵循SSH2協議,支援以加密和認證的方式,進行遠程伺服器的串連。

由於使用的是python這樣的能夠跨平台啟動並執行語言,所以所有python支援的平台,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支援,因此,如果需要使用SSH從一個平台串連到另外一個平台,進行一系列的操作時,paramiko是最佳工具之一。

舉個常見的例子,現有這樣的需求:需要使用windows用戶端,遠端連線到Linux伺服器,查看上面的日誌狀態,大家通常使用的方法會是:

1:用telnet

2:用PUTTY

3:用WinSCP

4:用XManager等…

那現在如果需求又增加一條,要從伺服器上下載檔案,該怎麼辦?那常用的辦法可能會是:

1:Linux上安裝FTP並配置

2:Linux上安裝Sambe並配置…

大家會發現,常見的解決方案都會需要對遠程伺服器必要的配置,如果遠程伺服器只有一兩台還好說,如果有N台,還需要逐台進行配置,或者需要使用代碼進行以上操作時,上面的辦法就不太方便了。

使用paramiko可以很好的解決以上問題,比起前面的方法,它僅需要在本地上安裝相應的軟體(python以及PyCrypto),對遠程伺服器沒有配置要求,對於串連多台伺服器,進行複雜的串連操作特別有協助。

二:安裝

安裝paramiko有兩個先決條件,python和另外一個名為PyCrypto的模組。

通常安裝標準的python模組,只需要在模組的根目錄下運行:

複製代碼 代碼如下:

python setup.py build

python setup.py install

以上兩條命令即可,paramiko和PyCrypto也不例外,唯一麻煩的就是安裝PyCrypto時,需要GCC庫編譯,如果沒有GCC庫會報錯,會導致PyCrypto以及paramiko無法安裝。

以下以32 位的windows XP為例,說明paramiko的安裝過程

1:安裝python,2.2以上版本都可以,我使用的是2.5,安裝過程略,並假設安裝目錄是c:\python。

2:判斷本地是否安裝了GCC,並在PATH變數可以找到,如果沒有,可使用windows 版的GCC,即MinGW,下載地址:http://sourceforge.net/projects/mingw/,然後運行下載後的exe檔案進行網路安裝,假設目錄為C:\mingw,在PATH中加入 C:\mingw\bin,並在c:\python\lib\distutils下建立一個名稱是distutils.cfg的檔案,填入:

複製代碼 代碼如下:

[build]
compiler=mingw32
 

3:下載PyCrypto ,地址是

https://www.dlitz.net/software/pycrypto/

安裝PyCrypto:

解壓縮
在dos下進入解壓縮的目錄,運行

複製代碼 代碼如下:

C:\python\python.exe setup.py build
C:\python\python.exe setup.py install
 

安裝測試
運行python.exe,在提示符下輸入:

複製代碼 代碼如下:

Import  Crypto

如果沒有出現錯誤提示,說明Crypto安裝成功

4:下載paramiko,地址是http://www.lag.net/paramiko/

解壓縮
在dos下進 入解壓縮的目錄,運行

複製代碼 代碼如下:

C:\python\python.exe setup.py build
C:\python\python.exe setup.py install

測試paramiko
運行python.exe,在提示符下輸入:
複製代碼 代碼如下:

Import  paramiko

如果沒有出現錯誤提示,說明paramiko安裝成功

 

三: 使用paramiko

如果大家感覺安裝paramiko還是略有麻煩的話,當使用到paramiko提供的方便時便會覺得這是十分值得的。

下面是兩種使用paramiko串連到linux伺服器的代碼

方式一:

複製代碼 代碼如下:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"使用者名稱", "口令")

上面的第二行代碼的作用是允許串連不在know_hosts檔案中的主機。

方式二:

複製代碼 代碼如下:

t = paramiko.Transport((“主機”,”連接埠”))
t.connect(username = “使用者名稱”, password = “口令”)

如果串連遠程主機需要提供密鑰,上面第二行代碼可改成:
複製代碼 代碼如下:

t.connect(username = “使用者名稱”, password = “口令”, hostkey=”密鑰”)

 

下面給出實際的例子:

3.1 windows對linux運行任意命令,並將結果輸出

如果linux伺服器開放了22連接埠,在windows端,我們可以使用paramiko遠端連線到該伺服器,並執行任意命令,然後通過 print或其它方式得到該結果,

複製代碼 代碼如下:

#!/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:查看磁碟使用方式
uptime:顯示系統已耗用時間資訊
cat:顯示某檔案內容
mv/cp/mkdir/rmdir:對檔案或目錄進行操作
/sbin/service/ xxxservice start/stop/restart:啟動、停止、重啟某服務
netstat -ntl |grep 8080:查看8080連接埠的使用方式
 或者 nc -zv localhost :查看所有連接埠的使用方式
find / -name XXX:尋找某檔案

這樣一來,對於linux的任何操作幾乎都可以通過windows端完成,如果對該功能進行引申,還可以同時管理多台伺服器。

3.2 從widnows端下載linux伺服器上的檔案

複製代碼 代碼如下:

#!/usr/bin/python
import paramiko

t = paramiko.Transport((“主機”,”連接埠”))
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伺服器

複製代碼 代碼如下:

#!/usr/bin/python
import paramiko

t = paramiko.Transport((“主機”,”連接埠”))
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()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.