python paramiko长连接_python使用paramiko实现ssh的功能详解

个人认为python的paramiko模块是运维人员必学模块之一,其ssh登录功能是旅行居家必备工具。

安装paramiko很简单,pip install paramiko就搞定了,其依赖库会被一并安装。

paramiko的官方站点在这里:http://www.paramiko.org/。有需要深入研究的可以阅读官方文档。

paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。

一、基于用户名和密码的 sshclient 方式登录

# 建立一个sshclient对象

ssh = paramiko.SSHClient()

# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 调用connect方法连接服务器

ssh.connect(hostname='192.168.2.129', port=22, username='super', password='super')

# 执行命令

stdin, stdout, stderr = ssh.exec_command('df -hl')

# 结果放到stdout中,如果有错误将放到stderr中

print(stdout.read().decode())

# 关闭连接

ssh.close()

二、基于用户名和密码的 transport 方式登录

方法1是传统的连接服务器、执行命令、关闭的一个操作,有时候需要登录上服务器执行多个操作,比如执行命令、上传/下载文件,方法1则无法实现,可以通过如下方式来操作

# 实例化一个transport对象

trans = paramiko.Transport(('192.168.2.129', 22))

# 建立连接

trans.connect(username='super', password='super')

# 将sshclient的对象的transport指定为以上的trans

ssh = paramiko.SSHClient()

ssh._transport = trans

# 执行命令,和传统方法一样

stdin, stdout, stderr = ssh.exec_command('df -hl')

print(stdout.read().decode())

# 关闭连接

trans.close()

三、 基于公钥密钥的 SSHClient 方式登录

# 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数

pkey = paramiko.RSAKey.from_private_key_file('/home/super/.ssh/id_rsa', password='12345')

# 建立连接

ssh = paramiko.SSHClient()

ssh.connect(hostname='192.168.2.129',

port=22,

username='super',

pkey=pkey)

# 执行命令

stdin, stdout, stderr = ssh.exec_command('df -hl')

# 结果放到stdout中,如果有错误将放到s

你可能感兴趣的:(python,paramiko长连接)