python paramiko
paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令。
项目地址:https://github.com/paramiko/paramiko
官方文档:http://docs.paramiko.org/
一、安装
root@ubuntu:~/paramiko# pip install paramiko
测试是否安装成功
>>> import paramiko
>>>
二、上传文件到远程服务器
原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。
任务:10. 1.101.187向10.1.101.186发送文件。
10.1.101.187 目录/root/paramiko 有三个文件 paramikosend.py test test.tar
10.1.101.186 目录/root/paramiko 开始为空文件夹
执行python paramikosend.py,代码如下
root@ubuntu:~/paramiko# cat paramikosend.py
import paramiko,datetime,os
hostname = '10.1.101.186'
username = 'root'
password = ''
port = 22
local_dir = '/root/paramiko'
remote_dir = '/root/paramiko'
try:
t=paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
files = os.listdir(local_dir)
for f in files:
sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
t.close()
except Exception:
print "connect error!"
结果:
三、从远程服务器下载文件
原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。
任务:现在10.1.101.186的/root/paramiko/temp186目录有两个文件,将其下载到10.1.101.187的/root/paramiko/temp187目录。


执行 python paramikoget.py ,代码如下
root@ubuntu:~/paramiko# cat paramikoget.py
import paramiko,datetime,os
hostname = '10.1.101.186'
username = 'root'
password = ''
port = 22
local_dir = '/root/paramiko/temp187'
remote_dir = '/root/paramiko/temp186'
try:
t=paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
files = sftp.listdir(remote_dir) #这里需要注意,列出远程文件必须使用sftp,而不能用os
for f in files:
sftp.get(os.path.join(remote_dir,f),os.path.join(local_dir,f))
t.close()
except Exception:
print "connect error!"
结果:

四、执行命令测试
原理:通过SSHClient类执行命令。SSHClient类是SSH服务会话的高级表示,封装了传输、通道以及SFTPClient的校验、建立方法,通常用于执行命令。
任务:通过10.1.101.187连接到10.1.101.186,然后进入目录/root/paramiko,创建一个目录lxy。
执行python paramikocommand.py,代码如下:
root@ubuntu:~/paramiko# cat paramikocommand.py
#!/usr/bin/python import paramiko
hostname = '10.1.101.186'
username = 'root'
password = ''
port = 22 ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname,port=port,username=username,password=password)
stdin, stdout, stderr = ssh.exec_command("cd /root/paramiko;mkdir lxy")
print stdout.readlines()
ssh.close()
结果:

命令中也可以带参数:
root@ubuntu:~/paramiko# cat paramikocommand.py
#!/usr/bin/python import paramiko
hostname = '10.1.101.186'
username = 'root'
password = ''
port = 22
name='testcmd' ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname,port=port,username=username,password=password)
stdin, stdout, stderr = ssh.exec_command("cd /root/paramiko;mkdir %s" %name)
print stdout.readlines()
ssh.close()

Note:exec_command为单个会话,执行完成之后会回到登录时的缺省目录。
比如执行下面两句。
stdin, stdout, stderr = ssh.exec_command("cd /root/paramiko;mkdir %s" %name)
stdin,stdout,stderr = ssh.exec_command('mkdir haha')
haha目录最终是在缺省的/root目录下新建的,而不是/root/paramiko目录。
五、python远程执行操作的其他开源模块
fabric:fabric是封装了paramiko模块来实现ssh来传输文件的。
pexpect:也可以实现ssh 登录到某个用户指定的主机上,运行某个用户指定的命令
本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/4670433.html有问题欢迎与我讨论,共同进步。
python paramiko的更多相关文章
- python+paramiko库+svn写的自动化部署脚本
第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
- python paramiko模拟ssh登录,实现sftp上传或者下载文件
Python Paramiko模块的安装与使用详解 paramiko是短链接,不是持续链接,只能执行你设定的shell命令,可以加分号执行两次命令. http://www.111cn.net/phpe ...
- python paramiko模块学习分享
python paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Sola ...
- python paramiko登陆设备
一,单线程 - shell交互 def chan_recv(chan): data = chan.recv(1024) # 收1024数据 sys.stdout.write(data.decode() ...
- python paramiko 进行文件上传处理
#!/usr/bin/env python # -*- coding:utf-8 -*- import paramiko import uuid class Ha(object): def __ini ...
- Python之路-python(paramiko,进程和线程的区别,GIL全局解释器锁,线程)
一.paramiko 二.进程.与线程区别 三.python GIL全局解释器锁 四.线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生 ...
- Python paramiko 模块
paramiko模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh ...
- python paramiko模块SSH自动登录linux系统进行操作
1). Linux系统首先要开启SSH服务:service ssh status 如果没安装的话,则要:apt-get install openssh-server service ssh resta ...
随机推荐
- 使用快捷键提升C#开发效率
好的工具能帮我们提升开发效率,能用工具去做的事情尽量使用工具,让我们的开发尽量自动化是提升开发效率的关键因素. 很多人都用过Resharper,也被Resharper超多的快捷键所折服,本篇文章我总结 ...
- netmiko初窥
paramiko 和 pexpect在笔记里被跳过 因为,他们都可以被netmiko所取代,不想在他们身上浪费太多时间 补一个地方就是,如果用paramiko遇到了connection莫名自己关闭的情 ...
- jQuery Sidebar 侧边栏
在线实例 左边栏 右边栏 使用方法 <div class="txt"> <p class="btn"> ...
- 前端优秀作品展示,JavaScript 版水果忍者
<水果忍者>是一款非常受喜欢的手机游戏,刚看到新闻说<水果忍者>四周年新版要上线了.网页版的切水果游戏由百度 JS 小组开发,采用 vml + svg 绘图,使用了 Rapha ...
- 小白详细讲解快速幂--杭电oj2035-A^B
Problem Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A的B次方” Input 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<= ...
- sharepoint 权限继承相关
重新继承父级权限: SPList.ResetRoleInheritance(); 断开继承: SPList.BreakRoleInheritance(true); 用powershell断开继承: $ ...
- SharePoint 2013 showModalDialog 弹出模式窗口
1. SharePoint 弹出框 本文讲述SharePoint 2013 中使用 SP.UI.ModalDialog.showModalDialog时 showModalDialog 未定义的问题 ...
- 查看Android系统给APP分配的最大堆栈
命令方式: cat /system/build.prop dalvik.vm.heapgrowthlimit=48m dalvik.vm.heapsize=128m 代码方式: Runtime rt= ...
- Android 从Gallery获取图片
本文主要介绍Android中从Gallery获取图片 设计项目布局 <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- iOS xcode使用断点追踪后,无法nslog,无法po对应的值 方法小结
今天使用断点追踪后,发现无法正常nslog,使用po也无法打印出对应的值,进入断点显示的值都为nil,网上查了一下,我总结出了以下几个可行方法: 法一:项目根目录->PROGECT->Bu ...