"Paramiko" is a combination of the Esperanto words for "paranoid" and "friend". It's a module for Python 2.7/3.4+ that implements the SSH2 protocol for secure (encrypted and authenticated) connections to remote machines. Unlike SSL (aka TLS), SSH2 protocol does not require hierarchical certificates signed by a powerful central authority. You may know SSH2 as the protocol that replaced Telnet and rsh for secure access to remote shells, but the protocol also includes the ability to open arbitrary channels to remote services across the encrypted tunnel (this is how SFTP works, for example).

  paramiko是一个远程控制模块,使用它可以很容易的再python中使用SSH执行命令和使用SFTP上传或下载文件;而且paramiko直接与远程系统交互,无需编写服务端。

  例一(实现一个简单的SSH客户端):

 import paramiko

 #实例化一个ssh客户端实例
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接远程 --- 填入要连接的地址,端口,用户,密码
ssh.connect(hostname="192.168.56.50", port=22, username='libin', password='') while True:
command = input(">>>:") #exec_command()返回三个值:the stdin, stdout, and stderr of the executing command, as a 3-tuple
stdin, stdout, stderr = ssh.exec_command(command) result = stdout.read()
error = stderr.read() if result:
print(result.decode())
else:
print(error.decode())
#关闭连接
ssh.close()

ssh_client

  例二(实现文件的上传和下载操作):

 import paramiko

 transport = paramiko.Transport('192.168.56.50', 22)
transport.connect(username='libin', password='')
#实例化一个SFTP客户端实例
sftp = paramiko.SFTPClient.from_transport(transport) #put('localpath', 'remotepath')上传本地文件至服务器
#sftp.put(r'E:\tempdownload\Sau_Authentication_Client_For_Windows_V6.82.exe', '/tmp/abc.exe')
#get('remotepath', 'localpath')将远程文件下载至本地
sftp.get('/tmp/abc.exe', r'E:\tempdownload\abc.exe') transport.close()

sftp_client

  为了连接安全,我们可以对上述两例稍加改变,使其使用密钥认证建立连接。

  例四(以密钥认证实现SSH):

 import paramiko

 #实例化一个ssh客户端实例
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接远程 --- 填入要连接的地址,端口,用户,密码 #导入私钥文件
private_key = paramiko.RSAKey.from_private_key_file('id_rsa_2048')
#连接远程
ssh.connect(hostname="192.168.56.50", port=22, username='libin', pkey=private_key) #无需再填入用户密码 while True:
command = input(">>>:") #exec_command()返回三个值:the stdin, stdout, and stderr of the executing command, as a 3-tuple
stdin, stdout, stderr = ssh.exec_command(command) result = stdout.read()
error = stderr.read() if result:
print(result.decode())
else:
print(error.decode())
#关闭连接
ssh.close()

key_ssh_client

  例五(以密钥认证实现SFTP):

 import paramiko

 transport = paramiko.Transport('192.168.56.50', 22)
#导入私钥文件
privat_key = paramiko.RSAKey.from_private_key_file('id_rsa_2048')
transport.connect(username='libin', pkey=privat_key)
#实例化一个SFTP客户端实例
sftp = paramiko.SFTPClient.from_transport(transport) #put('localpath', 'remotepath')上传本地文件至服务器
sftp.put(r'E:\tempdownload\test.exe', '/tmp/123.exe') # # get('remotepath', 'localpath')将远程文件下载至本地
# sftp.get('/tmp/abc.exe', r'E:\tempdownload\abc.exe')
transport.close()

key_sftp_client

第三方模块paramiko的使用的更多相关文章

  1. python第三方模块精选

    python不但有着强大丰富的“内置电池”,同样的,第三方模块也是非常的多.目前收集了requests.paramiko.pymsql,以后会陆续添加: 一.requests Python标准库中提供 ...

  2. python 常用第三方模块

    除了内建的模块外,Python还有大量的第三方模块. 基本上,所有的第三方模块都会在https://pypi.python.org/pypi上注册,只要找到对应的模块名字,即可用pip安装. 本章介绍 ...

  3. 【Python】[模块]使用模块,安装第三方模块

    一个.py文件就称之为一个模块(Model)按目录来组织模块的方法,称为包(Package)每一个包目录下面都会有一个__init__.py的文件内置函数1.使用模块 导入模块 import sys ...

  4. 安装第三方模块方法和requests

    如何安装第三方模块 pip3         pip3 install xxxx          源码         下载,解压         进入目录 python setup.py inst ...

  5. Python:Pycharm下无法导入安装好的第三方模块?

    Pycharm下无法导入安装好的第三方模块requests? 在cmd下使用pip安装好requests模块后,可以使用import requests,但在Pycharm IDE下无法导入,出现如下错 ...

  6. python 使用pip安装第三方模块

    part 1:使用方法: 1.pip install somePackage picture 1 2.pip show somePackage 例如:pip show pip 弹出关于该模块的信息 p ...

  7. SAE上安装第三方模块

    当sae上没有自己所需要的第三方模块时,可以使用saecloud install package [package...]将所需要的模块安装到本地应用文件夹下,然后在index.wsgi下添加如何代码 ...

  8. python基础——第三方模块

    python基础——第三方模块 在Python中,安装第三方模块,是通过包管理工具pip完成的.  如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了.  如果你正在使用Window ...

  9. Python-Windows下安装BeautifulSoup和requests第三方模块

    http://blog.csdn.net/yannanxiu/article/details/50432498 首先给出官网地址: 1.Request官网 2.BeautifulSoup官网 我下载的 ...

随机推荐

  1. Coursera课程 Programming Languages 总结

    课程 Programming Languages, Part A Programming Languages, Part B Programming Languages, Part C CSE341: ...

  2. ABP架构学习系列

    ABP实践学习系列 ABP Zero 本地化语言的初始化和扩展 ABP Zero 导航菜单之角色权限 ABP Zero示例项目问题总结  ABP后台服务之作业调度Quartz.NET   ABP架构学 ...

  3. vue.js之数据传递和数据分发slot

    一.组件间的数据传递 1.父组件获取子组件的数据 *子组件把自己的数据,发送到父级 *vm.$emit(事件名,数据); *v-on: @ 示例用法:当点击send按钮的时候,"111&qu ...

  4. 关于Springmvc中include与Sitemesh装饰器的基本使用

    关于Springmvc中include与Sitemesh装饰器的使用 !!!转载请注明出处=>http://www.cnblogs.com/funnyzpc/p/7283443.html 静态包 ...

  5. HDU 1312 Red and Black(DFS,板子题,详解,零基础教你代码实现DFS)

    Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  6. jsp/servlet相关技术及知识

    JSP页面的内容由两部分组成: 静态部分:标准的HTML标签.静态的页面内容, 动态部分:受Java程序控制的内容,这些都由java语言动态生成 简单的jsp页面代码: <%@ page lan ...

  7. codeforces 746C 模拟

    C. Tram time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  8. js第一课总结

    一. 当引用了一个src="demo.js"后,scrpit中间不能有js类的任何方法,都不会被执行. <!DOCTYPE html PUBLIC "-//W3C/ ...

  9. oracle数据泵备份与恢复库

    假如  导出库的用户名是tiger,密码是1  导入到用户名是scott,密码是1 备份库 expdp tiger/1@orcl dumpfile=expdp.dmp DIRECTORY=dpdata ...

  10. vue-router自动判断左右翻页转场动画

    前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui 因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作 ...