📌  相关文章
📜  如何用Python在远程机器上执行 Shell 命令?(1)

📅  最后修改于: 2023-12-03 15:09:13.259000             🧑  作者: Mango

如何用Python在远程机器上执行 Shell 命令?

有时候,我们需要在远程机器上执行一些 Shell 命令,比如查看服务器状态、执行一些脚本等等。Python是一个很强大的语言,可以用来实现这个功能。本文将介绍如何使用Python在远程机器上执行Shell命令。

1. 使用Paramiko库

Paramiko是一个Python库,可以实现SSH协议的客户端和服务器端的互联,并可以在远程服务器上执行命令。

安装

你可以使用pip来安装Paramiko库。在命令行中执行以下命令:

pip install paramiko
使用

以下是一个示例代码:

import paramiko

# 创建SSHClient实例
ssh = paramiko.SSHClient()

# 自动添加主机密钥(默认情况下拒绝不在本地known_hosts文件中的主机)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器
ssh.connect(hostname='localhost', port=22, username='ubuntu', password='password')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls -l')
print(stdout.read().decode())

# 关闭连接
ssh.close()

以上示例首先创建了一个SSHClient实例,然后连接到远程服务器,并使用exec_command方法执行了命令ls -l。最后,输出了命令的输出结果,并关闭了连接。

2. 使用Fabric库

Fabric是Python的一个库,用于对SSH连接进行封装,可以将一组命令打包执行,以及追踪并处理异常等。

安装

你可以使用pip来安装Fabric库。在命令行中执行以下命令:

pip install fabric
使用

以下是一个示例代码:

from fabric import Connection

# 连接远程服务器
with Connection('localhost', user='ubuntu', connect_kwargs={'password': 'password'}) as c:

    # 执行命令
    result = c.run('ls -l', hide=True)

    # 输出结果
    print(result.stdout)

以上示例使用了Fabric库的Connection类来连接远程服务器,并使用run方法执行了命令ls -l。最后,输出了命令的输出结果。

结语

本文介绍了如何使用Python在远程机器上执行Shell命令。你可以根据自己的需求选择使用Paramiko库还是Fabric库来实现这个功能。