在 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. FabricFabric 是一个基于 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. AsyncSSHAsyncSSH 是一个支持异步操作的 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. NetmikoNetmiko 是一个基于 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. SpurSpur 是一个轻量级的 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:支持并发,适合批量操作。根据你的需求选择合适的库即可!
网友回复


