Python 系统调用远程执行 shell 脚本返回屏显教程
简介
在开发过程中,有时需要通过 Python 调用远程服务器的 shell 脚本并获取执行结果。本文将以一个经验丰富的开发者的角度,教会一位刚入行的小白如何实现这一功能。首先,我们将给出整个流程的步骤,然后详细介绍每一步需要做什么,包括所需的代码和其注释。
整体流程
下面是实现 "Python 系统调用远程执行 shell 脚本返回屏显" 的整体流程,我们可以使用表格形式展示:
步骤 | 描述 |
---|---|
步骤 1 | 建立与远程服务器的连接 |
步骤 2 | 执行 shell 命令 |
步骤 3 | 获取命令执行结果 |
步骤 4 | 关闭连接 |
接下来,我们将逐步介绍每一步需要做什么。
步骤 1: 建立与远程服务器的连接
为了与远程服务器建立连接,我们可以使用 Paramiko 库。以下是建立连接的代码:
import paramiko
# 创建 SSH 客户端对象
client = paramiko.SSHClient()
# 允许自动接受远程主机的密钥
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
client.connect('远程服务器 IP', port=22, username='用户名', password='密码')
代码解释:
paramiko.SSHClient()
创建一个 SSH 客户端对象。client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
设置客户端自动接受远程主机的密钥。client.connect()
连接远程服务器,其中需要指定远程服务器的 IP、端口、用户名和密码。
步骤 2: 执行 shell 命令
使用 Paramiko 建立与远程服务器的连接后,我们可以通过该连接执行 shell 命令。以下是执行 shell 命令的代码:
# 执行 shell 命令
stdin, stdout, stderr = client.exec_command('shell 命令')
# 获取命令执行结果
output = stdout.read().decode('utf-8')
# 打印命令执行结果
print(output)
代码解释:
client.exec_command()
方法用于执行 shell 命令,并返回一个元组,其中包含命令的输入流、输出流和错误流。stdout.read().decode('utf-8')
读取并解码命令的输出流,获取命令执行结果。print(output)
打印命令执行结果。
步骤 3: 获取命令执行结果
在执行完 shell 命令后,我们可以通过输出流获取命令的执行结果。以下是获取命令执行结果的代码:
# 获取命令执行结果
output = stdout.read().decode('utf-8')
代码解释:
stdout.read().decode('utf-8')
读取并解码命令的输出流,获取命令执行结果。
步骤 4: 关闭连接
在完成任务后,我们需要关闭与远程服务器的连接。以下是关闭连接的代码:
# 关闭连接
client.close()
代码解释:
client.close()
关闭与远程服务器的连接。
完整代码示例
下面是一个完整的代码示例,展示了如何执行远程 shell 命令并获取执行结果:
import paramiko
# 创建 SSH 客户端对象
client = paramiko.SSHClient()
# 允许自动接受远程主机的密钥
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
client.connect('远程服务器 IP', port=22, username='用户名', password='密码')
# 执行 shell 命令
stdin, stdout, stderr = client.exec_command('shell 命令')
# 获取命令执行结果
output = stdout.read().decode('utf-8')
# 打印命令执行结果