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所示。

image 2023 12 08 13 20 48 168
Figure 1. 图6-1 程序运行结果