1.Paramiko模块
Paramiko模块是一个用于SSHv2协议的Python实现,它允许你通过SSH连接到远程服务器并执行命令、上传/下载文件等操作。这个库是用Python编写的,并遵循SSH2协议,以加密和认证的方式实现远程服务器的连接。由于Python的跨平台特性,Paramiko可以在所有Python支持的平台(如Linux, Solaris, BSD, MacOS X, Windows等)上使用。
2.核心组件
Paramiko包含两个核心组件:SSHClient和SFTPClient。SSHClient的作用类似于Linux的ssh命令,而SFTPClient则用于在远程服务器上安全地传输文件。
3.基本用法
(1)连接到远程服务器:你可以使用SSHClient对象的connect()方法连接到远程服务器。你需要提供远程服务器的IP地址、端口号、用户名和密码。
(2)执行命令:一旦你连接到远程服务器,你就可以使用exec_command()方法执行命令。这个方法将返回一个包含三个元素的元组,分别表示标准输出、标准错误和命令的退出状态。
(3)传输文件:要使用Paramiko传输文件,你需要创建一个SFTPClient对象,然后使用它的put()和get()方法。put()方法用于将本地文件上传到远程服务器,而get()方法则用于从远程服务器下载文件到本地。
实现代码:
import paramiko
# 设置SSH连接参数
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加主机名和主机密钥到本地HostKeys对象,并保存
# 虚拟机IP地址、用户名和密码
hostname = '192.168.81.128'
port = 22 # 默认的SSH端口
username = 'root'
password = '123456'
# 连接到虚拟机
ssh.connect(hostname=hostname, port=port, username=username, password=password)
# 创建一个新的SSH执行客户端来运行命令
stdin, stdout, stderr = ssh.exec_command('touch /666.txt')
# 检查命令执行是否有错误
if stderr.read().decode('utf-8'):
print(f"Error occurred: {stderr.read().decode('utf-8')}")
else:
print("File created successfully.")
# 关闭连接
ssh.close()
效果展示: