paramiko是基于Python实现用于做远程控制的第三方模块,使用该模块可以对远程服务器进行命令或文件操作,支持认证及密钥方式,自动化运维管理工具fabric和ansible内部的远程管理功能就是使用paramiko来现实的。
官网地址:https://pypi.python.org/pypi/paramiko
二、paramiko安装
# 安装依赖
yum install libffi libffi-devel openssl openssl-devel
#安装paramiko
pip3 install paramiko
三、paramiko相关操作
SSHClient
用于连接远程服务器并执行基本命令
基于用户名密码/用户名key连接:
import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ####基于密码 ssh.connect(hostname=\'c1.salt.com\', port=22, username=\'wupeiqi\', password=\'123\') # 连接服务器####基于key #private_key = paramiko.RSAKey.from_private_key_file(\'/home/auto/.ssh/id_rsa\') #ssh.connect(hostname=\'c1.salt.com\', port=22, username=\'wupeiqi\', key=private_key) # 执行命令 stdin, stdout, stderr = ssh.exec_command(\'df\') # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close()
import paramiko transport = paramiko.Transport((\'hostname\', 22)) #连接服务器 ####基于密码 transport.connect(username=\'wupeiqi\', password=\'123\') #连接服务器 ####基于key #private_key = paramiko.RSAKey.from_private_key_file(\'/home/auto/.ssh/id_rsa\') #transport.connect(username=\'wupeiqi\', pkey=private_key) ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command(\'df\') print stdout.read() transport.close()
SFTPClient
用于连接远程服务器并执行上传下载
基于用户名密码/用户名key上传下载:
import paramiko transport = paramiko.Transport((\'hostname\',22)) ###基于密码 transport.connect(username=\'wupeiqi\',password=\'123\') ###基于key #private_key = paramiko.RSAKey.from_private_key_file(\'/home/auto/.ssh/id_rsa\') #transport.connect(username=\'wupeiqi\', pkey=private_key ) sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put(\'/tmp/location.py\', \'/tmp/test.py\') # 将remove_path 下载到本地 local_path sftp.get(\'remove_path\', \'local_path\') transport.close()