Прежде чем вы скажете, что это дубликат, я перепробовал каждую команду, которую смог найти, и не могу удаленно перезагрузить компьютер 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 (), и у меня большой опыт работы с ними. Другие команды, использующие эти методы, работают нормально. Я просто не могу перезагрузить компьютер удаленно!
Спасибо, Шон