Python运维自动化Paramiko模块

Paramiko是一个Python实现的SSH2库,支持加密和密钥验证。通过SSHClient可以连接服务器并执行命令,如`exec_command`来运行shell命令。SFTPClient则用于文件的上传和下载,简化了Linux服务器之间的文件操作。示例中展示了如何使用Paramiko进行连接、执行命令以及文件传输。

为什么要用到paramiko模块

  工作中常用到Linux服务器需要更新开发的代码,之前一直是使用xshell连接多个linux服务器,要上传、下载、复制文件,操作起来有些麻烦

安装paramiko模块

  • pip install paramiko
  • 当前版本为3.2,安装好后即可以进行使用
    在这里插入图片描述

paramiko介绍

  • paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式。可以实现远程命令执行、文件传输
  • paramiko包含两个核心组件,一个为SSHClient类,另一个为SFTPClient类

SSHClient—连接服务器

  • SSHClient类是SSH服务会话的高级, 该类封装了传输(transport)、通道(channel)及SFTPClient的校验、建立的方法,通常用于执行远程命令。
#! /usr/bin/python3
# @Author: 无涯

#导入paramiko
import paramiko


#定义对象ssh_client
ssh_client=paramiko.SSHClient()

# 通过这个set_missing_host_key_policy方法用于实现登录是需要确认输入yes,否则保存,不加这个会报错
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#使用connect类来连接服务器
ssh_client.connect(hostname="主机地址", port=默认端口号22, username="用户名", password="密码")

没有报错,则说明连接正常,如图所示
在这里插入图片描述

exec_command—执行命令

使用exec_command执行命令会返回三个信息, 可以通过三个变量来接受,然后使用print输出到屏幕查看,如图所示

  1. 标准输入内容(用于实现交互式命令)
  2. 标准输出(保存命令的正常执行结果)
  3. 标准错误输出(保存命令的错误信息)
#! /usr/bin/python3
# @Author: 无涯

#导入paramiko
import paramiko


#定义对象ssh_client
ssh_client=paramiko.SSHClient()
# 通过这个set_missing_host_key_policy方法用于实现登录是需要确认输入yes,否则保存,不加这个会报错
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#使用connect类来连接服务器
ssh_client.connect(hostname="主机地址", port=默认端口号22, username="用户名", password="密码")

# 定义3个变量分别是:输入,输出,错误,python基础语法,不懂请学习python基础语法
std_in, std_out, std_err = ssh_client.exec_command("hostname")

# 读取输出的信息,为主机名,然后定义编码格式防止出现读取错误
print(std_out.read().decode("utf-8"))

# 运行结果  显示主机名
wuya

SFTPClient—传输文件

  • SFTPClient作为一个SFTP客户端对象,根据SSH传输协议的sftp会话,实现远程文件操作,比如文件上传、下载、权限、状态等操作。

下载和上传文件

  • 在linux服务中创建文件:test.yml
    在这里插入图片描述
import paramiko


ssh_conn = paramiko.Transport(("180.76.170.89", 22))
ssh_conn.connect(username="root", password="Rifnfhv223!@#")

# 创建连接后,使用sftpclient类和from_transport(括号里写上边创建的Transport通道)基于上边ssh连接创建一个sftp连接,
# 定义成ftp_client变量后边方便引用
ftp_client = paramiko.SFTPClient.from_transport(ssh_conn)

---------下载文件:get ---------
# 参数说明:ftp_client.get("目标文件", r"保存位置,写到文件名") 目标文件和保存位置都要写上文件名,如当前文件:test.yml
- 注意参数位置不能写错
ftp_client.get("/opt/test.yml", r"E:\Linux_File\test.yaml")


---------上传文件:put ---------
# 参数说明:ftp_client.put("目标文件", r"保存位置,写到文件名") 目标文件和保存位置都要写上文件名,如当前文件:test.ym
ftp_client.get(localpath=r"E:\Linux_File\test.yaml", remotepath="/opt/test.yml")


#关闭ssh连接
ssh_conn.close()

其它方法

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上开始

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值