欢迎访问宙启技术站
智能推送

Python中使用commands模块管理远程主机的命令执行

发布时间:2024-01-06 07:41:46

在Python中,可以使用commands模块来管理远程主机的命令执行。commands模块是一个简单的封装,可以调用系统命令并获取其输出结果。

下面是一个使用commands模块管理远程主机命令执行的示例:

import commands

def run_remote_command(host, username, password, command):
    # 构建远程命令字符串
    remote_command = f'sshpass -p {password} ssh {username}@{host} "{command}"'
    # 执行远程命令并获取输出结果
    status, output = commands.getstatusoutput(remote_command)
    
    if status == 0:   # 命令执行成功
        return output
    else:
        raise Exception(output)

# 示例使用
host = 'example.com'    # 远程主机IP或域名
username = 'user'       # 远程主机用户名
password = 'password'   # 远程主机密码
command = 'ls -l'       # 要在远程主机上执行的命令

try:
    result = run_remote_command(host, username, password, command)
    print('命令执行结果:')
    print(result)
except Exception as e:
    print('命令执行失败:')
    print(e)

在上面的示例中,我们定义了一个run_remote_command函数,它接受远程主机的IP或域名、用户名、密码和要执行的命令作为参数。在函数内部,我们使用commands.getstatusoutput函数执行远程命令,并获取命令的执行状态和输出结果。

如果命令执行成功(状态码为0),则输出结果。否则,抛出一个异常并打印出错误信息。

在示例的使用部分,我们定义了远程主机的相关信息和要执行的命令,并调用run_remote_command函数来执行命令。最后,根据命令执行结果打印相应的信息。

需要注意的是,上述示例中使用的是Linux系统上的sshpass命令来自动输入密码。你需要在本地系统上安装sshpass命令行工具,并替换示例中的sshpass命令为你本地系统上对应的命令。

另外,需要在远程主机上允许SSH登录,并配置了正确的用户名和密码。尽量使用SSH公钥认证来提高安全性。