在 Python 中,有几个常用的库可以用于 SSH 服务器远程连接和操作。以下是几个主流的库及其特点:
1. ParamikoParamiko 是 Python 中最流行的 SSH 库之一,支持 SSHv2 协议,可以用于远程连接、执行命令、上传下载文件等。
安装pip install paramiko示例代码
import paramiko # 创建 SSH 客户端 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接到远程服务器 ssh.connect('hostname', username='user', password='password') # 执行命令 stdin, stdout, stderr = ssh.exec_command('ls -l') print(stdout.read().decode()) # 关闭连接 ssh.close()特点支持 SSH 连接、SFTP 文件传输。功能强大,文档齐全。适合需要精细控制 SSH 连接的场景。2. Fabric
Fabric 是一个基于 Paramiko 的高级库,专注于简化远程命令执行和部署任务。
安装pip install fabric示例代码
from fabric import Connection # 连接到远程服务器 conn = Connection('user@hostname', connect_kwargs={'password': 'password'}) # 执行命令 result = conn.run('ls -l', hide=True) print(result.stdout) # 关闭连接 conn.close()特点简化了远程命令执行和文件操作。适合自动化部署和任务管理。基于 Paramiko,但提供了更高级的抽象。3. AsyncSSH
AsyncSSH 是一个支持异步操作的 SSH 库,适合需要高性能和并发处理的场景。
安装pip install asyncssh示例代码
import asyncio import asyncssh async def run_command(): async with asyncssh.connect('hostname', username='user', password='password') as conn: result = await conn.run('ls -l') print(result.stdout) # 运行异步任务 asyncio.get_event_loop().run_until_complete(run_command())特点支持异步操作,适合高并发场景。功能全面,包括 SSH、SFTP、SCP 等。需要熟悉 Python 的异步编程(asyncio)。4. Netmiko
Netmiko 是一个基于 Paramiko 的库,专注于网络设备的 SSH 连接和配置管理。
安装pip install netmiko示例代码
from netmiko import ConnectHandler # 设备连接信息 device = { 'device_type': 'cisco_ios', 'host': 'hostname', 'username': 'user', 'password': 'password', } # 连接到设备 conn = ConnectHandler(**device) # 执行命令 output = conn.send_command('show version') print(output) # 关闭连接 conn.disconnect()特点专为网络设备(如路由器、交换机)设计。支持多种设备类型(Cisco、Juniper、华为等)。简化了网络设备的配置和管理。5. Spur
Spur 是一个轻量级的 SSH 库,适合简单的远程命令执行。
安装pip install spur示例代码
import spur # 连接到远程服务器 shell = spur.SshShell(hostname='hostname', username='user', password='password') # 执行命令 result = shell.run(['ls', '-l']) print(result.output.decode())特点简单易用,适合快速实现远程命令执行。功能相对较少,适合轻量级需求。6. Parallel-SSH
Parallel-SSH 是一个支持并发 SSH 连接的库,适合同时管理多台服务器。
安装pip install parallel-ssh示例代码
from pssh import ParallelSSHClient # 定义多台主机 hosts = ['host1', 'host2'] client = ParallelSSHClient(hosts, user='user', password='password') # 并发执行命令 output = client.run_command('ls -l') for host, host_output in output.items(): print(f"Host: {host}") for line in host_output.stdout: print(line)特点支持并发 SSH 连接,适合批量操作。功能强大,适合管理多台服务器。总结Paramiko:功能全面,适合需要精细控制的场景。Fabric:简化了远程任务,适合自动化部署。AsyncSSH:支持异步操作,适合高并发场景。Netmiko:专为网络设备设计,适合网络工程师。Spur:轻量级,适合简单任务。Parallel-SSH:支持并发,适合批量操作。
根据你的需求选择合适的库即可!
网友回复