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中内建函数的简单用法说明
May 05 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
Python占用的内存优化教程
Jul 28 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
学Python 3的理由和必要性
Nov 19 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
使用python切片实现二维数组复制示例
Nov 26 Python
QT5 Designer 打不开的问题及解决方法
Aug 20 Python
Django3中的自定义用户模型实例详解
Aug 23 Python
Python实现http接口自动化测试的示例代码
Oct 09 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表单请求获得数据求和示例
2014/05/15 PHP
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
javascript时间函数大全
2014/06/30 Javascript
Position属性之relative用法
2015/12/14 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python自定义简单图轴简单实例
2018/01/08 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
django 微信网页授权登陆的实现
2019/07/30 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
物业客服专员岗位职责
2013/11/30 职场文书
生产部岗位职责范文
2014/02/07 职场文书
捐款倡议书
2014/04/14 职场文书
酒店管理求职信
2014/06/09 职场文书
社区志愿者活动总结
2014/06/26 职场文书
大学生找工作求职信
2014/07/09 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
入党函调证明材料
2015/06/19 职场文书
升学宴家长致辞
2015/07/27 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python