paramiko 的安装
paramiko 支持 pip、easy_install 或源码安装方式,很方便解决包依赖的问题,具体安装命令如下(根据用户环境,自行选择 pip 或 easy_install):
pip install paramiko
easy_install paramiko
paramiko 依赖第三方的 Crypto、Ecdsa 包及 Python 开发包 python-devel 的支持,源码安装步骤如下:
# yum -y install python-devel
# wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz
# tar -zxvf pycrypto-2.6.tar.gz
# cd pycrypto-2.6
# python setup.py install
# cd ..
# wget https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.10.tar.gz --no-check-certificate
# tar -zxvf ecdsa-0.10.tar.gz
# cd ecdsa-0.10
# python setup.py install
# cd ..
# wget https://github.com/paramiko/paramiko/archive/v1.12.2.tar.gz
# tar -zxvf v1.12.2.tar.gz
# cd paramiko-1.12.2/
# python setup.py install
校验安装结果,导入模块没有提示异常则说明安装成功:
# python
Python 2.6.6 (r266:84292, Jul 102013, 22:48:45)
[GCC 4.4.720120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
>>>
下面介绍一个简单实现远程 SSH 运行命令的示例。该示例使用密码认证方式,通过 exec_command() 方法执行命令,详细源码如下:
paramiko/simple1.py
#!/usr/bin/env python
import paramiko
hostname = '192.168.1.21'
username = 'root'
password = 'SKJh935yft#'
paramiko.util.log_to_file('syslogin.log') # 发送paramiko日志到syslogin.log文件
ssh = paramiko.SSHClient() # 创建一个ssh客户端client对象
ssh.load_system_host_keys() # 获取客户端host_keys,默认~/.ssh/known_hosts,非默认路
# 径需指定
ssh.connect(hostname=hostname, username=username, password=password) # 创建ssh连接
stdin, stdout, stderr = ssh.exec_command('free -m') # 调用远程执行命令方法exec_command()
print(stdout.read()) # 打印命令执行结果,得到Python列表形式,可以使用stdout.readlines()
ssh.close() # 关闭ssh连接
程序的运行结果截图如图6-1所示。
Figure 1. 图6-1 程序运行结果