paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,一般应用在多服务器管理即堡垒机中。
安装paramiko模块
pip3 install paramiko
基于 transport 方式登录
基于SSHClient是传统的连接服务器、执行命令、关闭的一个操作,有时候需要登录上服务器执行多个操作,比如执行命令,可以通过如下方式来操作
# 实例化一个transport对象
transport = paramiko.Transport(('10.20.3.4', 22))
# 建立连接
"""
基于秘钥的方式登录
private_key = paramiko.RSAKey.from_private_key_file('lihuabing')
transport.connect(username='lihuabing', pkey=private_key)
"""
# 基于密码的方式登录
transport.connect(username='root', password='12345.com')
# 将sshclient的对象的transport指定为以上的transport
ssh = paramiko.SSHClient()
ssh._transport = transport
"""
执行命令 获取命令结果:
stdin,显示输入的信息
stdout,显示输出的信息
stderr,显示错误信息
"""
stdin, stdout, stderr = ssh.exec_command('df -h')
# 获取命令结果
res,err = stdout.read(),stderr.read()
# 三元运算
result = res if res else err
print(result.decode())
# 关闭连接
transport.close()
SFTPClient用于连接远程服务器并执行上传下载
# 实例化一个transport对象
transport = paramiko.Transport(('10.20.3.4', 22))
# 建立连接
"""
基于秘钥的方式登录
private_key = paramiko.RSAKey.from_private_key_file('lihuabing')
transport.connect(username='lihuabing', pkey=private_key)
"""
# 基于密码的方式登录
transport.connect(username='root', password='12345.com')
# 实例化一个 sftp对象,指定连接的通道
sftp = paramiko.SFTPClient.from_transport(transport)
# 将myblog.sql 下载到本地 myblog.sql文件中
sftp.get('/home/lihuabing/myblog.sql', 'myblog.sql')
# myblog.sql 上传至服务器 /root/myblog.sql
sftp.put('myblog.sql', '/root/myblog.sql')
transport.close()
发表评论
共 0 条评论
暂无评论