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获取android设备的GPS信息脚本分享
Mar 06 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 Python
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
Python编程实现线性回归和批量梯度下降法代码实例
Jan 04 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
Python中三维坐标空间绘制的实现
Sep 22 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
php的memcached客户端memcached
2011/06/14 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
javascript实用方法总结
2015/02/06 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
Python实现的二维码生成小软件
2014/07/11 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python常见工厂函数用法示例
2018/03/21 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
写自荐信三大法宝
2014/01/24 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
会计毕业生自荐书
2014/06/12 职场文书
优秀教师单行材料
2014/12/16 职场文书
教师党员自我评价范文
2015/03/04 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android