paramiko学习笔记
- 为什么要用到paramiko模块
- 安装paramiko模块
- paramiko介绍
- SSHClient---连接服务器
- exec_command---执行命令
- SFTPClient---传输文件
- 下载和上传文件
- 其它方法
为什么要用到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输出到屏幕查看,如图所示
- 标准输入内容(用于实现交互式命令)
- 标准输出(保存命令的正常执行结果)
- 标准错误输出(保存命令的错误信息)
#! /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()