Найти - Пользователи
Полная версия: Проблемы с запуском через popen()
Начало » Python для экспертов » Проблемы с запуском через popen()
1
gnom
Добрый день.
У меня есть два скрипта, которые должны работать через pipe. Один скрипт должен запускать от sudo, так как он работает с COMпортом. Ниже пример кода, который должен вызывать COM.py с sudo.
import subprocess
process = subprocess.Popen(['sudo','python', 'COM.py'], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
print process.communicate("password\n")
while True:
	i="Test"
	process.stdin.write('%s\n' % str(i))
	output = process.stdout.readline()
	print output
Вопрос: Как правильно запустить скрипт от sudo?
Спасибо.
gnom
Singularity
http://stackoverflow.com/questions/567542/running-a-command-as-a-super-user-from-a-python-script
Пробовал.
Он должен как то запросить пароль от рута или он на автомате от него запускает? После запуска у меня пустые строки и видимо pipe между файлами не установился :(
gnom
Проблема была в том что вызывайющий скрипт нужно было вызывать через sudo, то есть:
sudo python name.py
FishHook
А если тот скрипт, который субпроцессы запускает, его от рута стартануть?
bw
А почему на уровне прав доступа к устройству не решить этот вопрос?
Ну или в sudoers можно разрешить запуск конкретной команды без пароля, если очень хочется именно sudo. Или ввод пароля обязательное условие?

p.s. Используйте ключ “-S” для sudo, что бы он читал пароль из stdin, иначе чтение будет из терминала выполняться, эта стандартная политика безопасности для консольного утиля.

..bw
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