python 3 并发编程多进程 paramiko 模块

时间:2021-06-20 17:58:35

python 3 paramiko模块

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

在python3中安装

pip3 install paramiko

python 3 并发编程多进程 paramiko 模块python 3 并发编程多进程 paramiko 模块
pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto #在python2中

pip3 install pycrypto

pip3 install paramiko

注:如果在安装pycrypto2.0.1时发生如下错误

command
'gcc' failed with exit status 1...

可能是缺少python
-dev安装包导致

如果gcc没有安装,请事先安装gcc
在python2安装

 SSHClient

用于连接远程服务器并执行基本命令:

python 3 并发编程多进程 paramiko 模块python 3 并发编程多进程 paramiko 模块
import paramiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.100.12.251', port=22, username='root', password='123456')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
基于用户名密码连接
python 3 并发编程多进程 paramiko 模块python 3 并发编程多进程 paramiko 模块
import paramiko

private_key
= paramiko.RSAKey.from_private_key_file('/tmp/id_rsa')

transport
= paramiko.Transport(('10.100.12.251', 22))

transport.connect(username
='root', pkey=private_key)

ssh
= paramiko.SSHClient()

ssh._transport
= transport

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

result
=stdout.read()

print(result.decode('utf-8'))



transport.close()
SSHClient 封装 Transport
python 3 并发编程多进程 paramiko 模块python 3 并发编程多进程 paramiko 模块
import paramiko

from io import StringIO

key_str
= """-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----
"""
private_key
= paramiko.RSAKey(file_obj=StringIO(key_str))

transport
= paramiko.Transport(('10.100.12.251', 22))

transport.connect(username
='root', pkey=private_key)


ssh
= paramiko.SSHClient()

ssh._transport
= transport


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

result
= stdout.read()

print(result.decode('utf-8'))

transport.close()



print(result)
基于私钥字符串进行连接 

SFTPClient

用于连接远程服务器并执行上传下载

python 3 并发编程多进程 paramiko 模块python 3 并发编程多进程 paramiko 模块
import paramiko


transport
= paramiko.Transport(('10.100.12.251',22))

transport.connect(username
='root',password='123456')


sftp
= paramiko.SFTPClient.from_transport(transport)

# 将location.py 上传至服务器 /tmp/test.py

sftp.put(
'/tmp/id_rsa', '/etc/test.rsa')

# 将remove_path 下载到本地 local_path

sftp.get(
'remove_path', 'local_path')



transport.close()
基于用户名密码上传下载
python 3 并发编程多进程 paramiko 模块python 3 并发编程多进程 paramiko 模块
import paramiko

transport
= paramiko.Transport(('10.100.12.251',22))
transport.connect(username
='root',password='xxx')

sftp
= paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/id_rsa', '/etc/test.rsa')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')

transport.close()
基于公钥密钥上传下载