python 系统调用远程执行shell脚本返回屏显
  sElzGQA8fX6P 2023年11月02日 48 0

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')

# 打印命令执行结果
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   99   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   69   0   0 Python
  fwjWaDlWXE4h   2024年05月17日   37   0   0 Python
  YpHJ7ITmccOD   2024年05月17日   39   0   0 Python
sElzGQA8fX6P