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 psutil模块简单使用实例
Apr 28 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
浅析python继承与多重继承
Sep 13 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
tensorflow 查看梯度方式
Feb 04 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
Pytest之测试命名规则的使用
Apr 16 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与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
计算机专业推荐信范文
2013/11/27 职场文书
大学生简历的个人自我评价
2013/12/04 职场文书
实习教师自我鉴定
2013/12/12 职场文书
小学防溺水制度
2014/01/29 职场文书
工作态度检讨书
2014/02/11 职场文书
读书活动实施方案
2014/03/10 职场文书
学雷锋月活动总结
2014/04/25 职场文书
聘用意向书
2014/07/29 职场文书
公务员政审材料
2014/12/23 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
盗窃案辩护词
2015/05/21 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers