paramiko 模块

paramiko 是一个 Python 模块,用于实现 SSH 协议,并提供了一个强大的接口来执行远程命令、管理远程文件等操作。它是一个非常流行的用于自动化和脚本化远程服务器管理的工具。

类/方法/属性 描述
paramiko.SSHClient 用于建立 SSH 连接的类,提供执行命令和传输文件的方法。
paramiko.Transport 底层传输类,用于建立 SSH 连接。
paramiko.SFTPClient 用于通过 SSH 进行文件传输的类。
paramiko.AutoAddPolicy SSH 服务器主机密钥策略,用于自动添加未知的主机密钥到本地主机密钥存储中。
paramiko.client.connect() SSHClient 类的静态方法,用于建立 SSH 连接。
paramiko.client.exec_command() SSHClient 类的方法,用于在远程服务器上执行命令。
paramiko.client.open_sftp() SSHClient 类的方法,用于打开 SFTP 会话。
paramiko.client.load_system_host_keys() SSHClient 类的方法,用于加载系统主机密钥。
paramiko.client.set_missing_host_key_policy() SSHClient 类的方法,用于设置缺失主机密钥策略。
paramiko.client.close() SSHClient 类的方法,用于关闭 SSH 连接。
paramiko.sftp.SFTPClient.put() SFTPClient 类的方法,用于将文件上传到远程服务器。
paramiko.sftp.SFTPClient.get() SFTPClient 类的方法,用于从远程服务器下载文件。
paramiko.sftp.SFTPClient.listdir() SFTPClient 类的方法,用于列出远程目录的内容。
paramiko.sftp.SFTPClient.mkdir() SFTPClient 类的方法,用于在远程服务器上创建目录。
paramiko.sftp.SFTPClient.remove() SFTPClient 类的方法,用于删除远程服务器上的文件。
paramiko.sftp.SFTPClient.rename() SFTPClient 类的方法,用于重命名远程服务器上的文件或目录。

封装 Transport 示例

以下是封装 paramiko.Transport 类的示例代码,用于管理 SSH 连接、执行远程命令和进行文件传输:

python 复制代码
import paramiko
from paramiko import Transport, SFTPClient


class SSHTransport:
    def __init__(self, hostname, port=22, username=None, password=None, pkey=None):
        self.hostname = hostname
        self.port = port
        self.username = username
        self.password = password
        self.pkey = pkey
        self.transport = None

    def connect(self):
        self.transport = Transport((self.hostname, self.port))
        self.transport.connect(username=self.username, password=self.password, pkey=self.pkey)

    def execute_command(self, command):
        if self.transport is None or not self.transport.is_active():
            raise Exception("Transport is not connected")

        session = self.transport.open_session()
        session.exec_command(command)
        stdout = session.makefile('r', -1)
        stderr = session.makefile_stderr('r', -1)
        return stdout.read(), stderr.read()

    def upload_file(self, local_path, remote_path):
        if self.transport is None or not self.transport.is_active():
            raise Exception("Transport is not connected")

        sftp = SFTPClient.from_transport(self.transport)
        sftp.put(local_path, remote_path)
        sftp.close()

    def download_file(self, remote_path, local_path):
        if self.transport is None or not self.transport.is_active():
            raise Exception("Transport is not connected")

        sftp = SFTPClient.from_transport(self.transport)
        sftp.get(remote_path, local_path)
        sftp.close()

    def close(self):
        if self.transport is not None:
            self.transport.close()


# 使用示例
ssh_transport = SSHTransport('192.168.226.26', username='root', password='lzz2578+')
ssh_transport.connect()

# 执行远程命令
stdout, stderr = ssh_transport.execute_command('ls -l')
print('STDOUT:', stdout.decode('utf-8'))
print('STDERR:', stderr.decode('utf-8'))

# 上传文件
ssh_transport.upload_file('log.txt', 'log.txt')

# 下载文件
ssh_transport.download_file('log.txt', 'log.txt')

# 关闭连接
ssh_transport.close()

说明

  • connect: 建立 SSH 连接。
  • execute_command: 执行远程命令并返回标准输出和标准错误。
  • upload_file: 上传本地文件到远程服务器。
  • download_file: 从远程服务器下载文件到本地。
  • close: 关闭 SSH 连接。
相关推荐
哆啦A梦的口袋呀1 分钟前
基于Python学习《Head First设计模式》第九章 迭代器和组合模式
python·学习·设计模式
sponge'21 分钟前
opencv学习笔记2:卷积、均值滤波、中值滤波
笔记·python·opencv·学习
databook1 小时前
概率图模型:机器学习的结构化概率之道
python·机器学习·scikit-learn
拾回程序猿的圈圈∞1 小时前
实战二:开发网页端界面完成黑白视频转为彩色视频
python·ai编程
亚林瓜子1 小时前
AWS Elastic Beanstalk + CodePipeline(Python Flask Web的国区CI/CD)
python·ci/cd·flask·web·aws·beanstalk·codepipeline
春末的南方城市1 小时前
中山大学&美团&港科大提出首个音频驱动多人对话视频生成MultiTalk,输入一个音频和提示,即可生成对应唇部、音频交互视频。
人工智能·python·深度学习·计算机视觉·transformer
深科文库2 小时前
构建 MCP 服务器:第 4 部分 — 创建工具
python·chatgpt·prompt·aigc·agi·ai-native
witton2 小时前
美化显示LLDB调试的数据结构
数据结构·python·lldb·美化·debugger·mupdf·pretty printer
nenchoumi31193 小时前
AirSim/Cosys-AirSim 游戏开发(一)XBox 手柄 Windows + python 连接与读取
windows·python·xbox
GoodStudyAndDayDayUp3 小时前
初入 python Django 框架总结
数据库·python·django