Найти - Пользователи
Полная версия: Выполнение сторонних программ в коде Python
Начало » Python для новичков » Выполнение сторонних программ в коде Python
1 2 3
o7412369815963
Manul
o7412369815963 к сожалению этот способ не канает. По прежнему запрашивает пароль от sudo. Придется, наверно, делать как сказал Enchantner.
Я только что проверил у себя - все сработало… u11.04
Возможно что-то не так делаете либо что-то с ОСью, можно диагностировать, попробовать запустить без судо - выйдет ли текст?
Попробовать для другой программы без парольный судо - сработает ли?

На всякий случай, вот ещё 1 вариант ввода пароля (использовал год назад):
    mypass = 'mypass\n'
from pexpect import spawn, EOF
child = spawn(cmd)
res = child.expect([r'.+?password.+?:\s?', EOF], timeout=120)
print 'res = ',res
child.sendline(mypass)
Manul
o7412369815963
Возможно что-то не так делаете либо что-то с ОСью, можно диагностировать, попробовать запустить без судо - выйдет ли текст?
При запуске без sudo выдает: This utility may only be run by the root user.
Попробовал в /etc/sudoers написать подобное для apt-get, результат тот же - просит пароль.

В ваш код постараюсь вникнуть, только 1 вопрос:
2 строчка “pexpect” может “expect”? Про первое библиотека по питону ничего не знает.
Enchantner
А если suid какой-нибудь?
Manul
Enchantner
А если suid какой-нибудь?
Судя по вики эта штука дает выполнять всем этот файл с правами админа? В общем, что я попробовал:
Пробовал chown'ом менять владельца, пробовал chmod'ом устанавливать приложениям /usr/sbin/pm-suspend и /usr/lib/pm-utils/bin/pm-action значения 777, 4555 и 4777.(Вес SUID'а 4000) Все опять прошло мимо. Пробовал таким же образом поколдовать с утилитой shutdown - та же дрянь.
o7412369815963
Manul
В ваш код постараюсь вникнуть, только 1 вопрос:
2 строчка “pexpect” может “expect”? Про первое библиотека по питону ничего не знает.
не, там все правильно - модуль pexpect, его нужно устанавливать отдельно, я это кусок кода использовал год назад - работал стабильно.
Manul
Как-то это все сложно… С этим тоже поразбираюсь, но что-то мне подсказывает, что есть способ проще, но на поверхности он не лежит. Столько геморроя из-за скрипта выключения для Delug'a:)
o7412369815963
вот ещё способ: под рутом крутиться скрипт который может выполнят некоторые команды (усыпление),
когда нужно - посылаем ему сигнал, тот выполняет нужную команду находясь под рутом.
Manul
А можно этот скрипт запусть в фоне, типа демоном? Возможно, я недопонял идею. Рассмотрим ситуацию, под которую и пишется скрипт.
Запускается торрент, допустим на ночь. Вы предлагаете после запуска Delug запустить некий скрипт с правами root(через sudo, видимо), который будет висеть и ожидать команды завершения? Надо будет попробовать… Завтра утречком. Отпишусь о результате.
Enchantner
Manul
Deluge сам написан на питоне, кроме того, для некоторых случаев есть d-bus. И зачем для управления им вообще рут?
Manul
Ну и что с того, что написан на питоне? Идет речь не об управлении Delugом, как таковым, а о запуске скрипта, который будет погружать в сон систему, запуская pm-suspend, который доступен только руту. Другое дело, что скрипт будет запускаться делугом после загрузки торрента.
Про d-bus можно по-подробнее?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB