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数据结构之Array用法实例
Oct 09 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
Python标准库inspect的具体使用方法
Dec 06 Python
python递归全排列实现方法
Aug 18 Python
numpy 计算两个数组重复程度的方法
Nov 07 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
jenkins+python自动化测试持续集成教程
May 12 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
python - timeit 时间模块
Apr 06 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
PHP5 字符串处理函数大全
2010/03/23 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
JavaScript 动态生成方法的例子
2009/07/22 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
在Python中使用next()方法操作文件的教程
2015/05/24 Python
python实现rsa加密实例详解
2017/07/19 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
影视动画专业个人的自我评价
2013/12/31 职场文书
护士演讲稿范文
2014/01/05 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
见义勇为事迹材料
2014/12/24 职场文书
八年级英语教学计划
2015/01/23 职场文书
赞助商致辞
2015/07/30 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server