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的学习和使用,我们可以更加便捷地管理远程服务器,提高工作效率。