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中使用PDB库调试程序
Apr 05 Python
Python实现的排列组合计算操作示例
Oct 13 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
python requests爬取高德地图数据的实例
Nov 10 Python
Python timeit模块的使用实践
Jan 13 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 12 Python
用Python将库打包发布到pypi
Apr 13 Python
Python 如何实现文件自动去重
Jun 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下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
PHP异常处理Exception类
2015/12/11 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
浅谈Javascript 数组与字典
2015/01/29 Javascript
使用console进行性能测试
2015/04/27 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
python的迭代器与生成器实例详解
2014/07/16 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
平面设计师的工作职责
2013/11/21 职场文书
高三地理教学反思
2014/01/11 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
学校2014年度工作总结
2014/12/06 职场文书
杭白菊导游词
2015/02/10 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android
windows系统搭建WEB服务器详细教程
2022/08/05 Servers
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS