Python paramiko 模块

2017-01-16  本文已影响597人  SateZheng

本文参考 http://www.361way.com/python-paramiko-ssh/3984.html

paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。可以用来远程登录主机并执行命令,传输文件等。

远程连接方法

使用paramiko模块有两种连接方式,一种是通过paramiko.SSHssh()函数,另外一种是通过paramiko.Transport()函数。

# 方法一:
import paramiko

ssh = paramiko.SSHssh()
# set_missing_host_key_policy 允许连接不在 known_hosts 文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("IP", 22, "用户名", "密码")
ssh.close() 

# 方法二:
import paramiko

t = paramiko.Transport(("主机",端口))   # 端口需要时 int 整型的
t.connect(username="用户名", password="密码")

SSH连接并执行命令

# 使用密码方式
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("IP", 22, "用户名", "密码")
# 执行命令 df
stdin, stdout, stderr = ssh.exec_command('uptime')
# 读取,数据量比较少,可以用 stdout.read() 读取
for line in stdout.readlines():
    print line
ssh.close() 


# 使用私钥方式
import paramiko

key = paramiko.RSAKey.from_private_key_file('/Users/zheng/.ssh/id_rsa')
ssh = paramiko.SSHssh()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("IP", 22, "用户名", pkey=key)
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()
ssh.close()

SFTP连接并上传下载文件

# 使用密码方式
import paramiko

scp = paramiko.Transport(('IP', 端口))
scp.connect(username='sate', password='pass')
sftp = paramiko.SFTPClient.from_transport(scp)
# 上传, 从本地上传到远端服务器
sftp.put('/tmp/server', '/tmp/server')
# 下载,从远端服务器下载到本地
sftp.get('/tmp/server', '/tmp/server')
scp.close()


# 使用私钥方式
import paramiko

scp = paramiko.Transport(('IP', 端口))
key = paramiko.RSAKey.from_private_key_file('/Users/zheng/.ssh/id_rsa')
scp.connect(username='sate', pkey=key)
sftp = paramiko.SFTPClient.from_transport(scp)
# 上传, 从本地上传到远端服务器
sftp.put('/tmp/server', '/tmp/server')
# 下载,从远端服务器下载到本地
sftp.get('/tmp/server', '/tmp/server')

scp.close()

上一篇下一篇

猜你喜欢

热点阅读