首页 > 技术文章 > paramiko模块

goldtree358 2019-11-26 13:32 原文

Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作

SSHClient

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

 

基于用户名和密码连接

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.200', port=22, username='root', password='password')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('top bn 1')
# 获取命令结果
res,err = stdout.read(),stderr.read()
result = res if res else err
print(result.decode())
# 关闭连接
ssh.close()
ssh client

基于公钥秘钥连接

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('C:\\Users\\Dell\\.ssh\\id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.200', port=22, username='root', pkey=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode())

# 关闭连接
ssh.close()
ssh client key

 

SFTPClient

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

基于用户名密码上传下载

import paramiko

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

sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('D:\\7_Python\\S14\\Day9\\ssh_sftp.py', '/tmp/ssh_sftp_from_NT')
# 将remove_path 下载到本地 local_path
#sftp.get('remove_path', 'local_path')

transport.close()
sftp client

基于公钥秘钥上传下载

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('C:\\Users\\Dell\\.ssh\\id_rsa')

transport = paramiko.Transport(('10.0.0.200', 22))
transport.connect(username='root', pkey=private_key )

sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('D:\\7_Python\\S14\\Day9\\ssh_sftp_key.py', '/tmp/ssh_sftp_key_from_NT.py')
# 将remove_path 下载到本地 local_path
#sftp.get('remove_path', 'local_path')

transport.close()
sftp client key

 

 

 

 

 

 

 

 

 

 

推荐阅读