【安装】
依赖模块:PyCrypto - The Python Cryptography Toolkit
wget http://www.lag.net/paramiko/download/paramiko-1.7.6.tar.gz
wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.4.1.tar.gz
1、安装pycrypto
<span style="white-space:pre"> </span>$ tar -zxvf pycrypto-2.0.1.tar.gz $ cd pycrypto-2.0.1 $ python setup.py build $ sudo python setup.py install2、安装 paramiko
$ tar -zxvf paramiko-1.7.6.tar.gz $ cd paramiko-1.7.6 $ python setup.py build $ sudo python setup.py install【安装可能遇到的问题】「基于CentOS,Ubuntu,Python 2.7.3 」
如果在安装pycrypto2.0.1时发生如下错误
command 'gcc' failed with exit status 1
view plain <strong>[/pycrypto-2.0.1]$ sudo python setup.py build running build running build_py running build_ext building 'Crypto.Hash.MD2' extension gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector ——param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC -Isrc/ -I/usr/include/python2.4 -c src/MD2.c -o build/temp.linux-x86_64-2.4/src/MD2.o unable to execute gcc: No such file or directory error: command 'gcc' failed with exit status 1</strong>解决方案1:
可能是缺少python-dev安装包导致
解决办法:
CentOS
yum -y install python-dev*ubuntu
sudo apt-get install python-dev如果上述办法不能解决,则是gcc没有安装,请安装gcc
【使用】
1、密码方式登录
#!/usr/bin/env python import paramiko #远程服务器 hostname = ‘192.168.0.1’ #端口 port = 22 #用户名 username = ‘Dominic’ #密码 password = ‘123456’ #创建SSH连接日志文件(只保留前一次连接的详细日志,以前的日志会自动被覆盖) paramiko.util.log_to_file(‘paramiko.log’) s = paramiko.SSHClient() #读取know_host s.load_system_host_keys() #建立SSH连接 s.connect(hostname,port,username,password) stdin,stdout,stderr = s.exec_command(‘df -h’) #打印标准输出 print stdout.read() s.close()
基于证书方式的登录
#!/usr/bin/env python import paramiko hostname = 'mislost.com' port = 22 username = 'ubuntu' key_file = '/root/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(key_file) s = paramiko.SSHClient() s.load_system_host_keys() s.connect(hostname,port,username,pkey=key) stdin,stdout,stderr = s.exec_command('df -h') print stdout.read() print stderr.read() s.close()
PS:
导入paramiko模块,可能会提示:
就是警告这个应用会使用随机数池(RandomPool),在较低的发行版中不支持这一功能,这个提示不会影响正常的使用。以下操作都在Python解释器中完成: