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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
Python 中的 else详解
Apr 23 Python
解决python "No module named pip" 的问题
Oct 13 Python
详解python实现交叉验证法与留出法
Jul 11 Python
Python3 批量扫描端口的例子
Jul 25 Python
Python笔记之观察者模式
Nov 20 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
如何写python的配置文件
Jun 07 Python
python爬虫之selenium库的安装及使用教程
May 23 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 Python
python小型的音频操作库mp3Play
Apr 24 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实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
使用ECharts实现状态区间图
2018/10/25 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
python使用pil生成图片验证码的方法
2015/05/08 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
WxPython实现无边框界面
2019/11/18 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
html5唤醒APP小记
2019/03/27 HTML / CSS
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
物业电工岗位职责
2013/11/20 职场文书
高中生活自我鉴定
2014/01/18 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
小学教育见习报告
2014/10/31 职场文书
万里长城导游词
2015/01/30 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android