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 基础学习教程
Feb 08 Python
python代码检查工具pylint 让你的python更规范
Sep 05 Python
Python中type的构造函数参数含义说明
Jun 21 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
python内存管理机制原理详解
Aug 12 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 Python
使用Python爬虫爬取小红书完完整整的全过程
Jan 19 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
python绘制条形图方法代码详解
2017/12/19 Python
图解Python变量与赋值
2018/04/03 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
python db类用法说明
2020/07/07 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
斯福泰克软件测试面试题
2015/02/16 面试题
护士试用期自我鉴定
2014/02/08 职场文书
出生公证委托书
2014/04/03 职场文书
毕业设计致谢词
2015/05/14 职场文书
纪委立案决定书
2015/06/24 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书