Python 如何使用os.system(或其他)远程关闭任何系统?

Python 如何使用os.system(或其他)远程关闭任何系统?,python,python-3.x,Python,Python 3.x,我正在尝试使用下面的调用关闭我的系统,但我希望它能在所有主要的OS发行版上运行。是否有全面关闭命令 import os os.system("shutdown /s /t 1") 有没有其他方法可以通过python代码远程关闭机器?对于远程管理节点,ansible是一个非常好的工具,通过收集事实,您可以获得当前节点操作系统,然后有条件地相应关闭。以下函数提供了向远程主机发送命令的便携式方法: def run_shell_remote_command(remote_host, remote_cm

我正在尝试使用下面的调用关闭我的系统,但我希望它能在所有主要的OS发行版上运行。是否有全面关闭命令

import os
os.system("shutdown /s /t 1")

有没有其他方法可以通过python代码远程关闭机器?

对于远程管理节点,ansible是一个非常好的工具,通过收集事实,您可以获得当前节点操作系统,然后有条件地相应关闭。

以下函数提供了向远程主机发送命令的便携式方法:

def run_shell_remote_command(remote_host, remote_cmd, pem_file=None, ignore_errors=False):
    remote_cmd = remote_cmd.split(' ')
    cmd = [SSH_PATH, '-o ConnectTimeout=30', '-o BatchMode=yes', '-o StrictHostKeyChecking=no']
    if pem_file:
        cmd.extend(['-i', pem_file])
    cmd.extend([remote_host] + remote_cmd)
    print(f"SSH CMD: {cmd}")
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = p.communicate()
    if p.returncode != 0:
        if not ignore_errors:
            raise RuntimeError("%r failed, status code %s stdout %r stderr %r" % (
                remote_cmd, p.returncode, stdout, stderr))
    return stdout.strip()  # This is the stdout from the shell command

这样,您就可以在远程主机上运行远程操作系统支持的任何命令。

对于
关机
,没有任何特定的
/s
。每个操作系统都可以发明自己的语义,甚至命令名。这根本不是一个Python问题——更多的是关于是否有一个可移植的等价于
shutdown
命令的问题,即使在没有任何软件开发的情况下也适用。因此,我的问题仍然是,是否有一个可移植的Python shutdown命令?谢谢不,没有。不过,你可以在预定义的OSs上编写自己的函数。对不起,我不认为这是可移植的。如果你的远程机器上安装了sshd,它是可移植的。顺便说一句,它现在是Windows组件的一部分