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 中random模块的常用方法总结
Jul 08 Python
python中MethodType方法介绍与使用示例
Aug 03 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
python负载均衡的简单实现方法
Feb 04 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
python调用摄像头显示图像的实例
Aug 03 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
详解django中Template语言
Feb 22 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
解决python Jupyter不能导入外部包问题
Apr 15 Python
Python pandas 列转行操作详解(类似hive中explode方法)
May 18 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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简单选择排序算法实例
2015/01/26 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
Python实现在线音乐播放器
2017/03/03 Python
Python实现购物程序思路及代码
2017/07/24 Python
python学生信息管理系统
2018/03/13 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
python中property和setter装饰器用法
2019/12/19 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
幼师自荐信
2013/10/26 职场文书
党章学习思想汇报
2014/01/14 职场文书
农民工创业典型事迹
2014/01/25 职场文书
党支部承诺书范文
2014/03/28 职场文书
安全责任协议书
2014/04/21 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
2015年小学生暑假总结
2015/07/13 职场文书