Он отлично работает с терминалом, но при вызове из потока в python он терпит неудачу.
history -d $((HISTCMD-1)) && echo 'password' | sudo -S shutdown -h 08:00
из python, вот что я сделал:
halt = "history -d $((HISTCMD-1)) && echo 'password' | sudo -S shutdown -h 08:00"
thread.start_new_thread(lambda: commands.getoutput(halt),())
I использовал lambda после того, как попробовал его для других команд, таких как открытие nautilus или gedit, что прекрасно работает, но команда shutdown не работает!
От человека sudo:
Опция -S (stdin) заставляет sudo считывать пароль со стандартного ввода вместо терминального устройства. За паролем должен следовать символ новой строки.Итак, после -S, он ждет символа NEWLINE, который вы предоставили при использовании терминала.