Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2011 17:23:43

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

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)

Офлайн

#2 Июль 6, 2011 18:07:00

Manul
От:
Зарегистрирован: 2010-09-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

o7412369815963
Возможно что-то не так делаете либо что-то с ОСью, можно диагностировать, попробовать запустить без судо - выйдет ли текст?
При запуске без sudo выдает: This utility may only be run by the root user.
Попробовал в /etc/sudoers написать подобное для apt-get, результат тот же - просит пароль.

В ваш код постараюсь вникнуть, только 1 вопрос:
2 строчка “pexpect” может “expect”? Про первое библиотека по питону ничего не знает.



Офлайн

#3 Июль 6, 2011 18:33:17

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

А если suid какой-нибудь?



Офлайн

#4 Июль 6, 2011 19:07:37

Manul
От:
Зарегистрирован: 2010-09-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

Enchantner
А если suid какой-нибудь?
Судя по вики эта штука дает выполнять всем этот файл с правами админа? В общем, что я попробовал:
Пробовал chown'ом менять владельца, пробовал chmod'ом устанавливать приложениям /usr/sbin/pm-suspend и /usr/lib/pm-utils/bin/pm-action значения 777, 4555 и 4777.(Вес SUID'а 4000) Все опять прошло мимо. Пробовал таким же образом поколдовать с утилитой shutdown - та же дрянь.



Отредактировано (Июль 6, 2011 19:08:02)

Офлайн

#5 Июль 6, 2011 20:38:15

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

Manul
В ваш код постараюсь вникнуть, только 1 вопрос:
2 строчка “pexpect” может “expect”? Про первое библиотека по питону ничего не знает.
не, там все правильно - модуль pexpect, его нужно устанавливать отдельно, я это кусок кода использовал год назад - работал стабильно.

Офлайн

#6 Июль 6, 2011 20:55:10

Manul
От:
Зарегистрирован: 2010-09-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

Как-то это все сложно… С этим тоже поразбираюсь, но что-то мне подсказывает, что есть способ проще, но на поверхности он не лежит. Столько геморроя из-за скрипта выключения для Delug'a:)



Отредактировано (Июль 6, 2011 20:55:36)

Офлайн

#7 Июль 6, 2011 21:09:49

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

вот ещё способ: под рутом крутиться скрипт который может выполнят некоторые команды (усыпление),
когда нужно - посылаем ему сигнал, тот выполняет нужную команду находясь под рутом.

Офлайн

#8 Июль 6, 2011 22:54:54

Manul
От:
Зарегистрирован: 2010-09-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

А можно этот скрипт запусть в фоне, типа демоном? Возможно, я недопонял идею. Рассмотрим ситуацию, под которую и пишется скрипт.
Запускается торрент, допустим на ночь. Вы предлагаете после запуска Delug запустить некий скрипт с правами root(через sudo, видимо), который будет висеть и ожидать команды завершения? Надо будет попробовать… Завтра утречком. Отпишусь о результате.



Офлайн

#9 Июль 6, 2011 23:30:53

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

Manul
Deluge сам написан на питоне, кроме того, для некоторых случаев есть d-bus. И зачем для управления им вообще рут?



Офлайн

#10 Июль 7, 2011 09:18:56

Manul
От:
Зарегистрирован: 2010-09-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение сторонних программ в коде Python

Ну и что с того, что написан на питоне? Идет речь не об управлении Delugом, как таковым, а о запуске скрипта, который будет погружать в сон систему, запуская pm-suspend, который доступен только руту. Другое дело, что скрипт будет запускаться делугом после загрузки торрента.
Про d-bus можно по-подробнее?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version