1、介紹java
1.最近手頭有個腳本用於遠程批量傳輸文件的。因爲系統自己環境兼容不是很好,因此開始升級配置環境。python
2.paramiko是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的鏈接。linux
因爲使用的是python這樣的可以跨平臺運行的語言,因此全部python支持的平臺,如Linux,Solaris,BSD,MacOSX,Windows等,paramiko均可以支持,所以,若是須要使用SSH從一個平臺鏈接到另一個平臺,進行一系列的操做時,paramiko是最佳工具之一。windows
2、安裝centos
1.因爲centos5.9的版本是2.4.3的,因此首先得將python進行升級。服務器
wget http://down1.chinaunix.net/distfiles/Python-2.7.3.tar.bz2 tar jxvf Python-2.7.3.tar.bz2 ./configure --prefix=/usr/local/Python-2.7.3/ make && make install mv /usr/bin/python /usr/bin/python_old ln -s /usr/local/Python-2.7.3/bin/python /usr/bin/python
2.以上對python進行了升級。下面開始安裝paramiko模塊,安裝paramiko模塊須要先安裝PyCrypto的模塊。ssh
wget http://down1.chinaunix.net/distfiles/pycrypto-2.0.1.tar.gz tar zxvf pycrypto-2.0.1.tar.gz python setup.py install
3.安裝完PyCrypto的模塊後,開始安裝ide
wget http://down1.chinaunix.net/distfiles/paramiko-1.5.4.zip unzip paramiko-1.5.4.zip python setup.py install python test.py((在paramiko的目錄下))
4.安裝完這些以後。基本就算完成了。下面就是測試下。工具
[root@localhost paramiko-1.7.6]# python test.py ........................................................................................................... 9s 9s ......... 5s 1s ......... 13s ......... 5s ......... ........ ..................... ---------------------------------------------------------------------- Ran 108 tests in 129.948s OK 出現這樣的就表示成功了,咱們再測試一把。
[root@localhost ~]# python Python 2.7.3 (default, Oct 2 2013, 03:25:17) [GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import 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.1windows對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 paramikot = 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服務器