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获取本机mac地址和ip地址的方法
Apr 29 Python
python处理大数字的方法
May 27 Python
python函数形参用法实例分析
Aug 04 Python
Python面向对象编程基础解析(一)
Oct 26 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
Python线程同步的实现代码
Oct 03 Python
Python下简易的单例模式详解
Apr 08 Python
Python实现插入排序和选择排序的方法
May 12 Python
python批量修改xml属性的实现方式
Mar 05 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 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中使用excel的简单介绍
2013/08/02 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
六行python代码的爱心曲线详解
2019/05/17 Python
python实现的分层随机抽样案例
2020/02/25 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
办公室文员工作自我评价
2013/12/01 职场文书
无工作经验者个人求职信范文
2013/12/22 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
党员剖析材料范文
2014/09/30 职场文书
2014年防汛工作总结
2014/12/08 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
大学生入党群众意见书
2015/06/02 职场文书