Как мне решить проблему с tty?

Я занимаюсь разработкой проекта с использованием скрипта Python в Ubuntu 10.04. В моем проекте мне нужно автоматически перезагрузить систему в определенный период времени. Таким образом, я написал следующую команду в своем скрипте Python.
passwd = "my system password"
os.system('echo %(passwd)s | sudo reboot -f' %locals())

Она работала нормально, но сегодня, когда я запускаю свой скрипт, он выдает следующую ошибку.

sudo no tty present and no askpass program specified
Как решить эту проблему. Мне нужно перезагрузить систему с помощью скрипта Python. Если вы знаете, дайте мне, ваш ответ очень полезен для меня.

2
задан 22 March 2013 в 14:59

2 ответа

Вы можете перезагрузить компьютер через dbus, пароль не требуется.

(взято из моего предыдущего ответа )

#!/usr/bin/env python

import dbus

def main():
    answer = raw_input("Do you really want to shutdown your computer? (Y/n): ")
    if answer in ('y', 'Y', ''):
        bus = dbus.SystemBus()
        bus_object = bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer")
        bus_object.Shutdown(dbus_interface="org.freedesktop.Hal.Device.SystemPowerManagement")

if __name__ == "__main__":
    main()
0
ответ дан 22 March 2013 в 14:59

Я нашел очень интересную информацию, которая могла помочь Вашей проблеме.

sudo только запустит программу как другого пользователя, если одно из этих 3 условий соблюдали (что касается паролей):

  1. опция NOPASSWD указана
  2. пользователь ввел корректный целевой пароль
  3. пользователь ввел корректный исходный пароль

Так как опции 2 и 3 требуют TTY (sudo, не будет читать из канала), он не будет работать, если он не может найти тот. Проверьте свой сценарий, если в какой-либо точке Вы запускаете скрипт удаленно с помощью ssh, поскольку возможно, что это не выделит TTY для неинтерактивной удаленной команды.

Источник: Сообщение № 2 (pludi) на sudo: никакой подарок tty и никакая askpass программа не указаны (linuxgeek)

Для получения дополнительной информации об этом решении, посмотрите то обсуждение форума.

0
ответ дан 22 March 2013 в 14:59

Другие вопросы по тегам:

Похожие вопросы: