博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
paramiko模块
阅读量:6594 次
发布时间:2019-06-24

本文共 2544 字,大约阅读时间需要 8 分钟。

先下载安装

1 pip3 install pycrypto  #由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto2 pip3 install paramiko

 

1.基于用户名密码连接

import paramiko # 创建SSH对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(hostname='elephant', port=22, username='huwei', password='9999')# 执行命令stdin, stdout, stderr = ssh.exec_command('df')# 获取命令结果result = stdout.read()  # 输出的结果是bytes类型的# 关闭连接ssh.close()

 解析:stdin:标准输入,输入的命令;stdout:标准输出,输入命令的执行结果;stderr:标准错误,执行命令报错的返回结果

SSHClient封装Transport:

import paramiko  transport = paramiko.Transport(('hostname', 22))  #创建实例transport.connect(username='huwei', password='huwei123')  #建立连接  ssh = paramiko.SSHClient()ssh._transport = transport  stdin, stdout, stderr = ssh.exec_command('df')print stdout.read()  #输出为bytes类型的  transport.close()
View Code

2.基于公钥密钥连接

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

SSHClient 封装Transport

import paramiko private_key = paramiko.RSAKey.from_private_key_file('id_rsa')transport = paramiko.Transport(('192.168.165.160', 22))transport.connect(username='huwei', pkey=private_key)ssh = paramiko.SSHClient()ssh._transport = transportstdin, stdout, stderr = ssh.exec_command('df')transport.close()

 

SFTPClient

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

1.基于用户名密码上传下载

import paramiko transport = paramiko.Transport(('192.168.165.160', 22))transport.connect(username='huwei', password='huwei123') sftp = paramiko.SFTPClient.from_transport(transport)# 将mac.txt 上传至服务器 /tmp/test# 必须要起文件名sftp.put('/mac.txt', '/tmp/test')# 将test 下载到本地132.txtsftp.get('/tmp/test', '/Users/huwei/PycharmProjects/s14/module_4/132.txt') transport.close()

2.基于公钥密钥上传下载

import paramiko   private_key = paramiko.RSAKey.from_private_key_file('id_rsa')  #私钥文件路径   transport = paramiko.Transport(('192.168.165.160', 22))transport.connect(username='huwei‘, pkey=private_key )   sftp = paramiko.SFTPClient.from_transport(transport)# 将mac.txt上传至服务器 /tmp/testsftp.put('mac.txt, '/tmp/test)# 将test下载到本地132.txtsftp.get('/tmp/test', '/Users/huwei/PycharmProjects/s14/module_4/132.txt')   transport.close()

注意:Linux主机上的公钥验证文件authorized_keys权限必须修改为属主可读(无其他属组,其他权限),否则连接将会报错。

 

转载于:https://www.cnblogs.com/Cohen/p/8746992.html

你可能感兴趣的文章
子类如果不实例化则不会调用它自身的静态构造函数
查看>>
Oracle中的case when then else end用法详解
查看>>
HTML简单的注册页面搭建
查看>>
C# 切图,部分代码
查看>>
转:推荐一个包:Hashids,用来把整数生成唯一字符串(比如:通过加密解密id来隐藏真实id)...
查看>>
插入排序
查看>>
unable to connect to ssl://gateway.sandbox.push.apple.com:2195 错误
查看>>
防止页面重复提交,插入重复数据的解决办法
查看>>
ByteCache
查看>>
python的浅拷贝和深拷贝
查看>>
Btree索引和Hash索引
查看>>
XHTML+CSS页面布局概括
查看>>
SQL字符串拼接
查看>>
Elementary Methods in Number Theory Exercise 1.4.8
查看>>
《数学分析新讲》_张筑生,12.5节:隐函数定理(1)
查看>>
SpringMVC插件安装、环境配置及快速入门_学习笔记
查看>>
WCF Data Service文章列表
查看>>
pointer 学习 之 swap
查看>>
【转载】Select函数实现原理分析
查看>>
python基础知识~ subprocess模块
查看>>