@kyklaed

Как с помощью subprocess передать пароль от sudo но не cделать процесс заблокированным?

Привет, подскажите, есть такая тулза tcpdump
мне нужно запустить ее в определенный момент что бы она начала выполняться а логи писались бы в файл. в консоль вывод не нужен, но она требует sudo пароль
вот что я сделал:
import subprocess
import signal

command = ['sudo', '-S','tcpdump', '-w', '/home/user/dump.pcap']
output = subprocess.Popen(command, stdout=subprocess.PIPE, stderr = subprocess.STDOUT, encoding='utf8' )
out,data = output.communicate('password'+'\n')

Это не совсем работает, я передаю пароль и выполнение начинается но комьюникате блокирует и я не могу завершить работу в момент когда мне нужно, а выход по таймеру не годится(можно перехватить исключение),
Как правильно это сделать ? мне нужно запустить выполнение и в какой то момент может через 5 секунд а может как то еще передать код на остановку и выход.
  • Вопрос задан
  • 1003 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
она требует sudo пароль

Это не "она требует", это у тебя sudo так настроен. Настрой его по-человечески, чтобы пароль не требовался (совсем, или только для запуска tcpdump) -- и у тебя будет на одну проблему меньше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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