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 16 Python
Python中max函数用法实例分析
Jul 17 Python
浅析Python编写函数装饰器
Mar 18 Python
python数字图像处理之高级滤波代码详解
Nov 23 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
pandas求两个表格不相交的集合方法
Dec 08 Python
python读写csv文件的方法
Aug 13 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
实现Python3数组旋转的3种算法实例
Sep 16 Python
Python中的面向接口编程示例详解
Jan 17 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中的float类型使用说明
2010/07/27 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
利用Python爬取可用的代理IP
2016/08/18 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python 变量的创建过程详解
2019/09/02 Python
python实现银行管理系统
2019/10/25 Python
通过实例了解python property属性
2019/11/01 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
大学毕业自我评价
2014/02/02 职场文书
财产公证书样本
2014/04/04 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
作风建设演讲稿
2014/05/23 职场文书
管理标语大全
2014/06/24 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
表扬信格式模板
2015/05/05 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB
Python matplotlib多个子图绘制整合
2022/04/13 Python