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的Zato发送AMQP消息的教程
Apr 16 Python
python xml解析实例详解
Nov 14 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
python返回数组的索引实例
Nov 28 Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
pytorch 如何把图像数据集进行划分成train,test和val
May 31 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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/05/14 PHP
php+mysql数据库查询实例
2015/01/21 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
扩展String功能方法
2006/09/22 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python获取本机外网ip的方法
2015/04/15 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
python实现图片筛选程序
2018/10/24 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python 实现按对象传值
2019/12/26 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
巴西网上药房:onofre
2016/11/21 全球购物
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
通用C#笔试题附答案
2016/11/26 面试题
岗位竞聘书范文
2014/03/31 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
工作年限证明模板
2015/06/15 职场文书
教师节座谈会主持词
2015/07/03 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书