Python使用paramiko操作linux的方法讲解


Posted in Python onFebruary 25, 2019

paramiko介绍

paramiko是一个基于python编写的、使用ssh协议的模块,跟xshell和xftp功能类似,支持加密与认证,可以上传下载和访问服务器的文件。

可以利用paramiko模块写服务器脚本,在本地执行,比如持续更新代码,查看日志,批量配置集群等。

paramiko 主要包含SSHClient和SFTPClient两个组件:

SSHClient

ssh服务会话的表示,通常用来执行命令,主要有connect、exec_command、load_system_host_keys和set_missing_host_key_policy方法。

  • connect:建立SSH远程连接并校验。
  • exec_command:执行指令并返回结果。
  • load_system_host_keys:加载本地公钥校验文件。
  • set_missing_host_key_policy:远程主机没有本地主机密钥或HostKeys时的策略。

SFTPClient

SFTP客户端对象,实现远程文件操作,主要有from_transport、put、get、Mkdir、remove、rename、stat、listdir等方法。

  • from_transport:从已通过验证的传输对象简历连接。
  • put:上传本地文件到服务器上。
  • get:从服务器下载文件到本地。
  • Mkdir、remove、rename、stat、listdir:创建目录、删除目录、重命名文件或目录、获取文件信息、获取指定目录中的列表。

安装与使用

安装

pip install paramiko

执行linux命令

import paramiko
#服务器信息,主机名(IP地址)、端口号、用户名及密码
hostname = "xxx.xxx.xx.170"
port = 11022
username = "rdadmin"
password = "818"
#创建SSH对象 
client = paramiko.SSHClient()
#自动添加策略,保存服务器的主机名和密钥信息
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
client.connect(hostname, port, username, password, compress=True)
# 执行linux命令
stdin, stdout, stderr = client.exec_command('ls /')
for line in stdout:
  print('... ' + line.strip('\n')) 
#or
print(stdout.readlines())

访问linux上的文件

import paramiko
hostname = "192.168.0.1"
port = 22
username = "root"
password = "root"
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port, username, password, compress=True)
sftp_client = client.open_sftp()
remote_file = sftp_client.open("/home/verified_list.txt") #文件路径
try:
  for line in remote_file:
    print(line.strip())
finally:
  remote_file.close()

上传到linux与从linux下载文件

import paramiko
hostname = 192.168.0.1
port = 22
username = "root"
password = "root"
transport = paramiko.Transport((hostname, port))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
# 下载文件
sftp.get("/home/share/video.mp4","./视频文件下载/")
#上传文件
sftp.put("./video.mp4","/home/share/video.mp4")
sftp.close()

与linux的交互操作

通过SSHClient的invoke_shell方法,可以创建一个交互会话的对象,和exec_command方法不同的是,这个可以实现命令交互,比如先cd到某个目录下,再执行脚本操作,然后退出,这种需要多个步骤的操作。

import paramiko
hostname = "192.168.0.1"
port = 22
username = "root"
password = "root"
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port, username, password, compress=True)
channel = client.invoke_shell() # 在SSH server端创建一个交互式的shell
command = ""
channel.send(command + '\n')
time.sleep(10)
stdout = channel.recv(1024*100000)
out_list = stdout.decode().split("\n")
client.close()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python提取页面内url列表的方法
May 25 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
基于Python中求和函数sum的用法详解
Jun 28 Python
python用for循环求和的方法总结
Jul 08 Python
Django Rest framework三种分页方式详解
Jul 26 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
pytorch自定义二值化网络层方式
Jan 07 Python
python 实现汉诺塔游戏
Nov 28 Python
python生成随机数、随机字符、随机字符串
Apr 06 Python
Python实现列表拼接和去重的三种方式
Jul 02 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 #Python
Python判断对象是否相等及eq函数的讲解
Feb 25 #Python
详解django中url路由配置及渲染方式
Feb 25 #Python
利用python脚本如何简化jar操作命令
Feb 24 #Python
Python中如何使用if语句处理列表实例代码
Feb 24 #Python
python实现两张图片的像素融合
Feb 23 #Python
Python判断有效的数独算法示例
Feb 23 #Python
You might like
PHP计数器的实现代码
2013/06/08 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
Python中多线程及程序锁浅析
2015/01/21 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
Python线程创建和终止实例代码
2018/01/20 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
对Python3中列表乘以某一个数的示例详解
2019/07/20 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
python应用文件读取与登录注册功能
2019/09/23 Python
简单的命令查看安装的python版本号
2020/08/28 Python
python eventlet绿化和patch原理
2020/11/21 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
升职自荐信
2013/11/28 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
建房协议书
2014/04/11 职场文书
生物技术专业求职信
2014/06/10 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
教师先进个人材料
2014/12/17 职场文书
出国留学英文自荐信
2015/03/25 职场文书
校园安全学习心得体会
2016/01/18 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python