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之坑爹的字符编码
Sep 28 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 Python
python逆序打印各位数字的方法
Jun 25 Python
Python求均值,方差,标准差的实例
Jun 29 Python
Python3 翻转二叉树的实现
Sep 30 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Python 如何批量更新已安装的库
May 26 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
python 实现端口扫描工具
Dec 18 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
短波的认识
2021/03/01 无线电
php 远程关机操作的代码
2008/12/05 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
python Opencv将图片转为字符画
2021/02/19 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
2014年会计工作总结
2014/11/27 职场文书
四年级数学教学反思
2016/02/16 职场文书