Перезагрузка удаленного компьютера Ubuntu с Python не работает - PullRequest
0 голосов
/ 11 апреля 2020

Прежде чем вы скажете, что это дубликат, я перепробовал каждую команду, которую смог найти, и не могу удаленно перезагрузить компьютер Ubuntu 18.04 Linux через Python 3.6.

Команды, которые я пробовал:

import subprocess

cp = subprocess.run(['sudo', 'shutdown', '-f', '-r', '-t', '2'])
cp = subprocess.run(['sudo', 'shutdown', '-f', '-r', 'now'])
cp = subprocess.run(['sudo', 'shutdown', '-r', 'now'])
subprocess.Popen('using all the above commands...')
os.system('using all the above commands')
os.system('shutdown -r -t 1 -f')
os.system('shutdown /r /t 1')

stdout = subprocess.check_output(['sudo', 'shutdown', '-r', 'now'], shell=True)

Последняя команда, использующая check_output (shell = True), возвращает следующий стандартный вывод:

Command '['sudo', 'shutdown', '-r', 'now']' returned non-zero exit status 1.

Мой компьютер удаленно прослушивание команд через MQTT (библиотека Paho). Он успешно получает эти команды и говорит, что пытается их выполнить. Об ошибках не сообщается, и удаленный компьютер продолжает работать, как будто не было выполнено ни одной команды. Также нет ничего в stdout (он просто сообщает '' или 'None').

Если я нахожусь в терминале, я могу легко перезагрузить этот компьютер с помощью:

sudo shutdown -r now

Почему он не работает с Python? Я давно использую методы subprocess.run (), subprocess.Popen () и subprocess.check_output (), и у меня большой опыт работы с ними. Другие команды, использующие эти методы, работают нормально. Я просто не могу перезагрузить компьютер удаленно!

Спасибо, Шон

...