第三方模块-paramiko(远程连接主机)

一、安装 pip3 install paramiko

二、连接方式

1、传统方式

#1、 创建SSH对象
ssh = paramiko.SSHClient()
#2、 允许连接不在know_hosts文件中的主机
# 第一次回答自动yes
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#3、连接服务器
ssh.connect(hostname='192.168.4.72',port=22,username='root',password='123123')
#4、执行命令
stdin,stdout,stderr=ssh.exec_command('df -h')
#5、获取命令结果
res,err=stdout.read(),stderr.read()
result = res if res else err
# print(result.decode())
#6、关闭连接
ssh.close()

2、基于用户名密码transport方式登录

# 实例化一个transport
transport = paramiko.Transport(('192.168.4.72',22))
# 建立连接
transport.connect(username='root',password='123123')
# 将sshclient对象transport指定为以上的transport
ssh = paramiko.SSHClient()
ssh._transport = transport
# 执行命令 和传统方法一样
stdin,stdout,stderr=ssh.exec_command('free -m')
# print(stdout.read().decode())
# 关闭连接
transport.close()

3、基于公钥秘钥连接

# private_key = paramiko.RSAKey.from_private_key_file('/Users/root/.ssh/id_rsa')
# # 创建SSH对象
# ssh = paramiko.SSHClient()
# # 允许连接不在know_hosts文件中的主机
# ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# # 连接服务器
# ssh.connect(hostname='192.168.4.72', port=22, username='root', pkey=private_key)
# # 执行命令
# stdin, stdout, stderr = ssh.exec_command('df')
# # 获取命令结果
# res,err = stdout.read(),stderr.read()
# result = res if res else err
# # print(result.decode())
# # 关闭连接
# ssh.close()

三、上传put下载get

transport=paramiko.Transport(('192.168.4.72',22))
transport.connect(username='root',password='123123')
#实例化一个sftp对象指定连接通道
sftp=paramiko.SFTPClient.from_transport(transport)
#将id_rsa 下载并命名123文件,将123上传
sftp.get('/root/.ssh/id_rsa','123')
sftp.put('123', '/root/.ssh/123')
transport.close()

 

posted @ 2019-08-02 16:20  桑铎是大叔  阅读(402)  评论(0)    收藏  举报