paramiko使用介绍,Python远程操作Linux
paramiko是基于Python实现的SSH2远程安全连接,支持认证和秘钥方式。可以实现远程命令执行、文件传输、中间SSH代理等功能。paramiko包含两个核心组件,一个为SSHClient类,另一个是SFTPClient类,下面将详细介绍。
1. 安装paramiko
pip install paramiko
2.SSHClient类
SSHClient类是SSH服务会话的高级表示,该类封装了传输(transport)、通道(channel)及SFTPClient的校验、建立的方法,通常用于执行远程命令。
# -*- coding:utf-8 -*-
import paramiko
import os
hostname = ''
username = ''
password = ''
shell = 'ls -l /home'
# paramiko.util.log_to_file('syslogin.log') # 设置日志输出文件
ssh = paramiko.SSHClient() # 创建ssh客户端
# ssh.load_system_host_keys() # 获取客户端host_keys, 若本地无秘钥信息需使用set_missing_host_key_policy函数
# 设置远程连接的主机没有本地主机秘钥或HostKeys对象时的策略。AutoAddPolicy RejectPolicy WarningPolicy
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname, username=username, password=password) # 创建ssh连接
stdin, stdout, stderr = ssh.exec_command(shell) # 执行命令
print(str(stdout.read(), 'utf8')) # 打印执行命令结果
ssh.close() # 关闭ssh连接
3.SFTPClient类
SFTPClient作为一个SFTP客户端对象,根据SSH传输协议的sftp会话,实现远程文件操作,比如文件上传、下载、权限、状态等操作。
# -*- coding:utf8 -*-
import paramiko
username = ''
password = ''
hostname = ''
port = 22
try:
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password) # 认证
sftp = paramiko.SFTPClient.from_transport(t) # 创建已连通的SFTP客户端通道
sftp.put('syslogin.log', '/home/upload/syslogin.log') # 上传文件
sftp.rename('/home/upload/syslogin.log', '/home/upload/upload.log') # 重命名
print(sftp.stat('/home/upload/upload.log')) # 打印文件信息
sftp.get('/home/upload/syslogin.log', 'download.txt') # 下载文件
sftp.rmdir('/home/upload/test') # 删除目录
sftp.mkdir('/home/upload/test', mode=int('777', 8)) # 创建目录,权限尚有疑问?
print(sftp.listdir('/home/upload')) # 打印目录
t.close()
except Exception as e:
print(str(e))