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 相关文章推荐
zbar解码二维码和条形码示例
Feb 07 Python
最基础的Python的socket编程入门教程
Apr 23 Python
编写Python脚本来获取Google搜索结果的示例
May 04 Python
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
python实现稀疏矩阵示例代码
Jun 09 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
python如何实现int函数的方法示例
Feb 19 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
TensorFlow的权值更新方法
Jun 14 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 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
多重?l件?合查?(二)
2006/10/09 PHP
一个颜色轮换的简单例子
2006/10/09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
详解php中的implements 使用
2017/06/13 PHP
基于Jquery实现键盘按键监听
2014/05/11 Javascript
百度地图api如何使用
2015/08/03 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
中国高端家电购物商城:顺电
2018/03/04 全球购物
自荐信格式技巧有哪些呢
2013/11/19 职场文书
档案检查欢迎词
2014/01/13 职场文书
2014年端午节活动方案
2014/03/11 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
交通事故协议书
2014/04/15 职场文书
运动会宣传口号
2014/06/09 职场文书
股东出资证明书范例
2014/10/04 职场文书
防火标语大全
2014/10/06 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
React配置子路由的实现
2021/06/03 Javascript
分析并发编程之LongAdder原理
2021/06/29 Java/Android
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android