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 import自定义模块方法
Feb 12 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
python处理xml文件的方法小结
May 02 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
Java与Python两大幸存者谁更胜一筹呢
Apr 12 Python
python实现时间o(1)的最小栈的实例代码
Jul 23 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
解决python3插入mysql时内容带有引号的问题
Mar 02 Python
Python定义一个函数的方法
Jun 15 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 安全过滤函数代码
2011/05/07 PHP
php购物车实现代码
2011/10/10 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
js微信分享API
2020/10/11 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Selenium定位元素操作示例
2018/08/10 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
2014和解协议书范文
2014/09/15 职场文书
学生检讨书怎么写
2015/05/07 职场文书
党员读书活动心得体会
2016/01/14 职场文书
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫