python Paramiko使用示例

1. Paramiko是什么

Paramiko是一个Python实现的SSHv2协议的模块,可以实现远程服务器的连接和远程命令的执行。它提供了一个高层次的接口,封装了SSH协议的复杂性,使得在Python中使用SSH变得更加方便。

2. 安装Paramiko库

2.1 安装pip

pip是Python的包管理工具,可以方便地安装第三方库。

# 在终端或命令行中执行以下命令安装pip

$ python get-pip.py

2.2 安装Paramiko

使用pip安装Paramiko库非常简单。

# 在终端或命令行中执行以下命令安装Paramiko

$ pip install paramiko

3. Paramiko基本用法

3.1 连接远程服务器

使用Paramiko连接远程服务器,需要指定服务器的IP地址和SSH登录凭证(用户名和密码)。

import paramiko

hostname = 'your_server_ip'

username = 'your_username'

password = 'your_password'

# 创建SSH客户端对象

client = paramiko.SSHClient()

# 自动添加远程主机的SSH密钥

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器

client.connect(hostname, username=username, password=password)

# 连接成功后可以执行后续操作

# ...

# 关闭SSH连接

client.close()

3.2 执行远程命令

Paramiko提供了一个exec_command()方法用于执行远程命令。

import paramiko

hostname = 'your_server_ip'

username = 'your_username'

password = 'your_password'

command = 'ls -l'

# 创建SSH客户端对象

client = paramiko.SSHClient()

# 自动添加远程主机的SSH密钥

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器

client.connect(hostname, username=username, password=password)

# 执行远程命令

stdin, stdout, stderr = client.exec_command(command)

# 获取命令执行结果

result = stdout.read()

# 输出命令执行结果

print(result)

# 关闭SSH连接

client.close()

3.3 上传和下载文件

Paramiko的SFTP模块可以实现文件的上传和下载。

import paramiko

hostname = 'your_server_ip'

username = 'your_username'

password = 'your_password'

local_path = 'local_file_path'

remote_path = 'remote_file_path'

# 创建SSH客户端对象

client = paramiko.SSHClient()

# 自动添加远程主机的SSH密钥

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器

client.connect(hostname, username=username, password=password)

# 创建SFTP客户端对象

sftp_client = client.open_sftp()

# 上传文件

sftp_client.put(local_path, remote_path)

# 下载文件

sftp_client.get(remote_path, local_path)

# 关闭SFTP连接

sftp_client.close()

# 关闭SSH连接

client.close()

4. Paramiko高级用法

4.1 使用密钥认证

除了使用用户名和密码进行认证外,Paramiko还支持使用密钥进行认证。

import paramiko

hostname = 'your_server_ip'

username = 'your_username'

private_key_path = 'your_private_key_path'

# 创建SSH客户端对象

client = paramiko.SSHClient()

# 自动添加远程主机的SSH密钥

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 使用密钥认证

private_key = paramiko.RSAKey.from_private_key_file(private_key_path)

client.connect(hostname, username=username, pkey=private_key)

# 连接成功后可以执行后续操作

# ...

# 关闭SSH连接

client.close()

4.2 运行交互式命令

除了exec_command()方法执行一次性的命令外,Paramiko还提供了invoke_shell()方法用于运行交互式的命令。

import paramiko

hostname = 'your_server_ip'

username = 'your_username'

password = 'your_password'

command = 'top'

# 创建SSH客户端对象

client = paramiko.SSHClient()

# 自动添加远程主机的SSH密钥

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器

client.connect(hostname, username=username, password=password)

# 运行交互式命令

chan = client.invoke_shell()

chan.send(command + '\n')

# 等待命令执行完成

while not chan.recv_ready():

continue

# 获取命令执行结果

result = chan.recv(4096).decode()

# 输出命令执行结果

print(result)

# 关闭SSH连接

client.close()

5. 总结

Paramiko是一个功能强大而又易于使用的Python模块,可以方便地实现远程服务器的连接和远程命令的执行。通过对Paramiko的学习和使用,我们可以更加便捷地管理远程服务器,提高工作效率。

后端开发标签