Как использовать os.system (или альтернативу) для удаленного выключения любой системы? - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь использовать приведенный ниже вызов для выключения моей системы, но мне бы хотелось, чтобы она работала на всех основных ОС. Есть ли команда перехватить все команды?

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

Есть ли другой способ удаленного выключения машины через код Python?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Следующая функция обеспечивает переносимый способ отправки команд на удаленный хост:

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

Таким образом, вы можете запускать любые команды на удаленном хосте, которые поддерживаются удаленной ОС.

0 голосов
/ 03 ноября 2019

Для удаленного управления узлами ansible - очень хороший инструмент, с помощью которого можно собрать факты, которые вы можете получить из текущего узла, а затем условно закрыть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...