一、paramiko模組有什麼用?

paramiko是用python語言寫的一個模組,遵循SSH2協議,支援以加密和認證的方式,進行遠端伺服器的連線。由於使用的是python這樣的能夠跨平臺執行的語言,所以所有python支援的平臺,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支援,因此,如果需要使用SSH從一個平臺連線到另外一個平臺,進行一系列的操作時,比如:批量執行命令,批量上傳檔案等操作,paramiko是最佳工具之一。

目前新的版本,官網在此:

https://github.com/paramiko/paramiko

舊版本在此:

http://www.lag.net/paramiko/legacy.html

要安裝新版本paramiko模組需要做以下準備:

1.Python2.5+ 版本(Linux, Unix, Windows都可以),這裡就直接安裝Python2.7
    下載地址:http://www.python.org

2.PyCrypto 2.1+ 模組(PyCrypto是使用Python編寫的加密工具包)
    下載地址:https://www.dlitz.net/software/pycrypto/

3.easy_install 工具(是Python安裝模組的一個工具,像yum,可以自動解決依賴)

    下載地址: http://peak.telecommunity.com/dist/ez_setup.py

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

二、Linux上安裝paramiko(以CentOS 5.8 32位 為例)

1.檢視Python的版本,是否滿足要求

[root@server1 ~]# python -V
Python 2.4.3
[root@server1 ~]#

Windows上亦是此命令,注意是大寫V

是2.4.3版本,需要升級

2.下載安裝python2.7

原始碼安裝Python2.7
如果沒有gcc沒有安裝,請先安裝好gcc

root@server2 ~]# wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
[root@server2 ~]# tar jxf Python-2.7.5.tar.bz2
[root@server2 ~]# cd Python-2.7.5
[root@server2 Python-2.7.5]# ./configure --prefix=/usr/local/python2.7
[root@server2 Python-2.7.5]# make && make install
[root@server2 Python-2.7.5]# echo "PATH=/usr/local/python2.7/bin:$PATH" >> /etc/profile
[root@server2 Python-2.7.5]# source /etc/profile
[root@server2 Python-2.7.5]# python -V
Python 2.7.5
[root@server2 Python-2.7.5]# python
Python 2.7.5 (default, Aug 16 2013, 07:56:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

至此Python2.7 安裝成功

3.安裝easy_install 工具

下載該指令碼

[root@server2 ~]# wget http://peak.telecommunity.com/dist/ez_setup.py
[root@server2 ~]# python ez_setup.py
Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
Processing setuptools-0.6c11-py2.7.egg
Copying setuptools-0.6c11-py2.7.egg to /usr/local/python2.7/lib/python2.7/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/local/python2.7/bin
Installing easy_install-2.7 script to /usr/local/python2.7/bin
Installed /usr/local/python2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

只需要執行以上命令,即可安裝好easy_install 工具

4.安裝paramiko模組

使用以下命令,即可安裝好paramiko模組

[root@server2 ~]# easy_install paramiko

進入Python匯入paramiko一下試試

[root@server2 ~]# python
Python 2.7.5 (default, Aug 16 2013, 07:56:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
/usr/local/python2.7/lib/python2.7/site-packages/pycrypto-2.6-py2.7-linux-i686.egg/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
>>>

匯入模組時,如果遇到以上問題,可能是由於gmp版本比較低造成的,gmp是啥,看官網的解釋:
GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers.
看樣子是跟精度有關係

可以用以下方法解決:
先解除安裝低版本

root@server2 ~]# rpm -qa | grep gmp
gmp-devel-4.1.4-10.el5
gmp-4.1.4-10.el5
[root@server2 ~]# rpm -e gmp-devel-4.1.4-10.el5.i386
[root@server2 ~]# rpm -e gcc-gfortran-4.1.2-52.el5.i386
[root@server2 ~]# rpm -e gmp-4.1.4-10.el5
[root@server2 ~]# ldconfig
[root@server2 ~]#

然後安裝高版本的gmp

[root@server2 ~]# wget http://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.bz2
[root@server2 ~]# tar jxf gmp-5.1.2.tar.bz2
[root@server2 ~]# cd gmp-5.1.2
[root@server2 gmp-5.1.2]# ./configure && make && make install
[root@server2 gmp-5.1.2]# echo "/usr/local/lib" >> /etc/ld.so.conf
[root@server2 gmp-5.1.2]# ldconfig

再次嘗試匯入paramiko模組:

[root@server2 gmp-5.1.2]# python
Python 2.7.5 (default, Aug 16 2013, 07:56:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
>>> dir(paramiko)
[`AUTH_FAILED`, `AUTH_PARTIALLY_SUCCESSFUL`, `AUTH_SUCCESSFUL`, `Agent`, `AgentKey`, `AuthHandler`, `AuthenticationException`, `AutoAddPolicy`, `BadAuthenticationType`, `BadHostKeyException`, `BaseSFTP`, `BufferedFile`, `Channel`, `ChannelException`, `ChannelFile`, `DSSKey`, `HostKeys`, `InteractiveQuery`, `Message`, `MissingHostKeyPolicy`, `OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED`, `OPEN_FAILED_CONNECT_FAILED`, `OPEN_FAILED_RESOURCE_SHORTAGE`, `OPEN_FAILED_UNKNOWN_CHANNEL_TYPE`, `OPEN_SUCCEEDED`, `PKey`, `Packetizer`, `PasswordRequiredException`, `ProxyCommand`, `ProxyCommandFailure`, `RSAKey`, `RejectPolicy`, `SFTP`, `SFTPAttributes`, `SFTPClient`, `SFTPError`, `SFTPFile`, `SFTPHandle`, `SFTPServer`, `SFTPServerInterface`, `SFTP_BAD_MESSAGE`, `SFTP_CONNECTION_LOST`, `SFTP_EOF`, `SFTP_FAILURE`, `SFTP_NO_CONNECTION`, `SFTP_NO_SUCH_FILE`, `SFTP_OK`, `SFTP_OP_UNSUPPORTED`, `SFTP_PERMISSION_DENIED`, `SSHClient`, `SSHConfig`, `SSHException`, `SecurityOptions`, `ServerInterface`, `SubsystemHandler`, `Transport`, `WarningPolicy`, `__all__`, `__author__`, `__builtins__`, `__doc__`, `__file__`, `__license__`, `__loader__`, `__name__`, `__package__`, `__path__`, `__version__`, `agent`, `auth_handler`, `ber`, `buffered_pipe`, `channel`, `client`, `common`, `compress`, `config`, `dsskey`, `file`, `hostkeys`, `io_sleep`, `kex_gex`, `kex_group1`, `message`, `packet`, `pipe`, `pkey`, `primes`, `proxy`, `resource`, `rsakey`, `server`, `sftp`, `sftp_attr`, `sftp_client`, `sftp_file`, `sftp_handle`, `sftp_server`, `sftp_si`, `ssh_exception`, `sys`, `transport`, `util`]
>>>

一切正常,至此paramiko模組在Linux上安裝完成

5.如果覺著手動安裝比較麻煩的話,請使用以下一鍵安裝指令碼(請下載附件)

 請使用 < source 指令碼名 > 的方式執行指令碼

#!/bin/bash
#--------------------------------------------------
# Name:         one_key_install_paramiko
# Purpose:      一鍵安裝paramiko需要的環境
# Version:      1.0
# Author:       LEO
# BLOG:         http://linux5588.blog.51cto.com
# EMAIL:        chanyipiaomiao@163.com
# Created:      2013-09-06
# Copyright:    (c) LEO 2013
#---------------------------------------------------
export PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# 檢測GCC是否安裝
checkGCC(){
    if ! gcc -v &>/dev/null; then
        echo
        echo "GCC not Found! Please use < yum -y install gcc* > "
        echo
        exit 1
    fi
}
# 安裝新版本gmp包
installNewGMP(){
    wget http://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.bz2
    tar jxf gmp-5.1.2.tar.bz2
    cd gmp-5.1.2
    ./configure && make && make install
    echo "/usr/local/lib" >> /etc/ld.so.conf
    ldconfig
}
# 安裝easy_install工具
installEasy_install(){
    if easy_install -h &>/dev/null ;then
        echo
        echo "easy_install already installed"
        echo
    else
        wget http://peak.telecommunity.com/dist/ez_setup.py
        python ez_setup.py
    fi
}
# 安裝paramiko模組
installParamiko(){
    easy_install paramiko
}
# 安裝Python2.7
installPython27(){
    wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
    tar jxf Python-2.7.5.tar.bz2
    cd Python-2.7.5
    ./configure --prefix=/usr/local/python2.7
    make && make install
    echo "export PATH=/usr/local/python2.7/bin:$PATH" >> /etc/profile
    source /etc/profile
}
# 檢查Python版本是否符合要求
TEMP="tempfile"       
checkPython(){
    python -V 2>${TEMP}
    VERSION=$(awk -F. `{print $2}` ${TEMP})
    rm -f ${TEMP}
    if [[ $VERSION -lt 7 ]]; then
        echo
        echo "Python Version does not meet the requirements,We Will auto download and install."
        echo
        installPython27
        installEasy_install
        installParamiko
    else
        installEasy_install
        installParamiko
    fi
}
# 呼叫函式檢查GCC
checkGCC
# 呼叫函式安裝新版本gmp
installNewGMP
# 呼叫函式檢查Python
checkPython

三、Windows7 32上安裝paramiko模組

1.下載安裝python2.7

用下載工具下載這2個檔案
http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi
http://peak.telecommunity.com/dist/ez_setup.py
預設安裝即可,預設安裝路徑 C:Python27,就不演示安裝過程了。

安裝之後把C:Python27新增到系統的Path變數裡面,然後在命令列下輸入python測試一下。

C:UsersTestAA>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

看到以上結果,代表python已經安裝成功。

2.安裝easy_install工具

C:UsersTestAADesktop>python ez_setup.py
Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-p
y2.7.egg
Processing setuptools-0.6c11-py2.7.egg
Copying setuptools-0.6c11-py2.7.egg to c:python27libsite-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install-script.py script to C:Python27Scripts
Installing easy_install.exe script to C:Python27Scripts
Installing easy_install.exe.manifest script to C:Python27Scripts
Installing easy_install-2.7-script.py script to C:Python27Scripts
Installing easy_install-2.7.exe script to C:Python27Scripts
Installing easy_install-2.7.exe.manifest script to C:Python27Scripts
Installed c:python27libsite-packagessetuptools-0.6c11-py2.7.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

再把 C:Python27Scripts 該路徑新增到 系統的Path 變數裡面,這樣就可以直接使用easy_install命令了。

3.安裝PyCrypto模組

由於在Windows上平臺上不管使用手工編譯,還是用easy_install命令對該模組進行安裝的話,非常
容易出現問題,而且特別的麻煩,所以已經有人幫我們編譯好了Windows平臺上對應的版本,只需要下載安裝即可

到這個位置下載對應的版本 pycrypto-2.6.win32-py2.7
http://www.voidspace.org.uk/python/modules.shtml#pycrypto

或者 到我的網盤進行下載
http://pan.baidu.com/share/link?shareid=3896105660&uk=839171987

安裝過程,只需要下一步下一步即可。

4.使用easy_install安裝paramiko模組

C:UsersTestAA>easy_install paramiko
Searching for paramiko
Reading http://pypi.python.org/simple/paramiko/
Best match: paramiko 1.11.0
Downloading https://pypi.python.org/packages/source/p/paramiko/paramiko-1.11.0.t
ar.gz#md5=a2c55dc04904bd08d984533703177084
Processing paramiko-1.11.0.tar.gz
Running paramiko-1.11.0setup.py -q bdist_egg --dist-dir c:users	estaaappdata
local	empeasy_install-rla6aaparamiko-1.11.0egg-dist-tmp-aynqgv
zip_safe flag not set; analyzing archive contents...
Adding paramiko 1.11.0 to easy-install.pth file
Installed c:python27libsite-packagesparamiko-1.11.0-py2.7.egg
Processing dependencies for paramiko
Finished processing dependencies for paramiko
C:UsersTestAA>

進入Python匯入paramiko一下看看,

C:UsersTestAA>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
>>> dir(paramiko)
[`AUTH_FAILED`, `AUTH_PARTIALLY_SUCCESSFUL`, `AUTH_SUCCESSFUL`, `Agent`, `AgentK
ey`, `AuthHandler`, `AuthenticationException`, `AutoAddPolicy`, `BadAuthenticati
onType`, `BadHostKeyException`, `BaseSFTP`, `BufferedFile`, `Channel`, `ChannelE
xception`, `ChannelFile`, `DSSKey`, `HostKeys`, `InteractiveQuery`, `Message`, `
MissingHostKeyPolicy`, `OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED`, `OPEN_FAILED_C
ONNECT_FAILED`, `OPEN_FAILED_RESOURCE_SHORTAGE`, `OPEN_FAILED_UNKNOWN_CHANNEL_TY
PE`, `OPEN_SUCCEEDED`, `PKey`, `Packetizer`, `PasswordRequiredException`, `Proxy
Command`, `ProxyCommandFailure`, `RSAKey`, `RejectPolicy`, `SFTP`, `SFTPAttribut
es`, `SFTPClient`, `SFTPError`, `SFTPFile`, `SFTPHandle`, `SFTPServer`, `SFTPSer
verInterface`, `SFTP_BAD_MESSAGE`, `SFTP_CONNECTION_LOST`, `SFTP_EOF`, `SFTP_FAI
LURE`, `SFTP_NO_CONNECTION`, `SFTP_NO_SUCH_FILE`, `SFTP_OK`, `SFTP_OP_UNSUPPORTE
D`, `SFTP_PERMISSION_DENIED`, `SSHClient`, `SSHConfig`, `SSHException`, `Securit
yOptions`, `ServerInterface`, `SubsystemHandler`, `Transport`, `WarningPolicy`,
`__all__`, `__author__`, `__builtins__`, `__doc__`, `__file__`, `__license__`, `
__loader__`, `__name__`, `__package__`, `__path__`, `__version__`, `agent`, `aut
h_handler`, `ber`, `buffered_pipe`, `channel`, `client`, `common`, `compress`, `
config`, `dsskey`, `file`, `hostkeys`, `io_sleep`, `kex_gex`, `kex_group1`, `mes
sage`, `packet`, `pipe`, `pkey`, `primes`, `proxy`, `resource`, `rsakey`, `serve
r`, `sftp`, `sftp_attr`, `sftp_client`, `sftp_file`, `sftp_handle`, `sftp_server
`, `sftp_si`, `ssh_exception`, `sys`, `transport`, `util`]
>>>

看到以上情況,說明paramiko已經成功安裝了