python的paramiko模块实现远程控制和传输示例


Posted in Python onOctober 13, 2017

本文介绍了python的paramiko模块实现远程控制和传输示例,分享给大家,具体如下:

1 安装

sudo pip install paramiko

2 ssh实现远程控制

#LINUX下执行shell
ssh username@ip #输入密码后就可以对远程机器进行操作
ssh username@ip command #输入密码后远程机器就执行command

ssh运行后,想退出,可以kill掉ssh进程。

3 paramiko实现ssh

import paramiko
hostname = '10.1.111.111'
username = 'root'
password = '111111'
port = 22 #整数不是字符串
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机
ssh.connect(hostname=hostname,port=port,username=username,password=password)
stdin, stdout, stderr = ssh.exec_command("ls") #远程执行shell命令
print(stdout.readlines()) #输出回显结果
ssh.close()

exec_command命令,以分号;分隔表示先后执行两个命令;可以传入多个参数; exec_command为单个会话,执行完成之后会回到登录时的缺省目录,如下:

a='~/Videos'
b='aaa'
ssh.exec_command('cd %s;mkdir %s'%(a,b)) #aaa在a目录下
ssh.exec_command('mkdir aaa') #aaa在缺省目录下

远端执行命令时如果有交互,可以这样用 stdin.write(“”)来完成。

注意:

(1)sudo后要加-S,表示从stdin接收密码;

(2)stdin.write(‘password\n')最后要加\n作为命令的结束,否则服务器一直等待;

(3) flush()写入的缓冲( flush() any buffer you're writing to )

stdin, stdout, stderr = ssh.exec_command('sudo -S ls')
stdin.write('password\n')
stdin.flush()

可以利用多进程或线程可以批量执行命令:

import paramiko
import threading

def ssh_cmd(ip,port,username,passwd,cmd):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(ip,port,username,passwd)
  for m in cmd:
    stdin, stdout, stderr = ssh.exec_command(m)
    print(stdout.readlines()) 
  ssh.close()

if __name__=='__main__':
  cmd = ['ls','ifconfig']   
  a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd))
  a.start() 
  a.join()

4 远程传输文件

scp从本地服务器复制到远程服务器

scp local_file remote_username@remote_ip:remote_file

指定了用户名,命令执行后需要输入用户密码;如果不指定用户名,命令执行后需要输入用户名和密码; 从远处复制文件到本地

scp remote_username@remote_ip:remote_file local_file

5 paramiko实现远程传输文件

新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证。实现文件

上传:

sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
#sftp = ssh.open_sftp() #两者选其一即可
sftp.put('bbb.c','aaa.c') #文件上传并重命名
sftp.close()

或者以下实现文件上传和下载:

import paramiko
t=paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t) 
sftp.put('bbb.c','aaa.c') #文件上传并重命名
sftp.get('m.py', 'mm.py')#文件下载并重命名
t.close()

官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析xml文件实例分享
Dec 04 Python
跟老齐学Python之for循环语句
Oct 02 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
老生常谈Python进阶之装饰器
May 11 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
在双python下设置python3为默认的方法
Oct 31 Python
python抓取京东小米8手机配置信息
Nov 13 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 Python
python 表格打印代码实例解析
Oct 12 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
Python 中的Sympy详细使用
Aug 07 Python
基于python(urlparse)模板的使用方法总结
Oct 13 #Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 #Python
Python中的浮点数原理与运算分析
Oct 12 #Python
python中获得当前目录和上级目录的实现方法
Oct 12 #Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 #Python
Python调用C# Com dll组件实战教程
Oct 12 #Python
python 实现一个贴吧图片爬虫的示例
Oct 12 #Python
You might like
做一个有下拉功能的留言版
2006/10/09 PHP
模拟flock实现文件锁定
2007/02/14 PHP
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
Python列表计数及插入实例
2014/12/17 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
python 图像平移和旋转的实例
2019/01/10 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
行政助理的岗位职责
2014/02/18 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
森林防火标语
2014/06/23 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
台风停课通知
2015/04/24 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL