LINUX.ORG.RU

python subprocess sudo

 


0

1

Такой код:

import subprocess

print ("Start program")
cmd = r'sudo /home/user/prog/tool/bin/resample -p param.prm  '
PIPE = subprocess.PIPE
p = subprocess.Popen(cmd, shell = True)

Пишет в консоль:

password for linux: 
sudo: unable to read password: Input/output error
sudo: a password is required

Как написать, чтобы была возможность ввести пароль?



Последнее исправление: yoholo (всего исправлений: 2)

Такой код

Код, какой код? Где код?

kali

Фу, таким быть и такие вопросы задавать.

Самое простое - настроить повышение привилегий без ввода пароля. Т.е., питон здесь не причём.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от vvn_black

Да, получилось настроить повышение привилегий без ввода пароля.
Напишите как записать в строку

cmd = r'sudo /home/user/prog/tool/bin/resample -p param.prm  '

значение переменной?

yoholo
() автор топика
Последнее исправление: yoholo (всего исправлений: 1)
Ответ на: комментарий от hippi90

Запускай через sudo свой скрипт, а не используй его внутри.

Не надо так делать. С повышением привилегий должны выполняться те и только те действия, для которых это требуется. Чем меньше, тем лучше.

CrX ★★★
()

У sudo есть специальный ключ. Кажется -S, который заставляет его считывать пароль из stdin. Делаешь subprocess.Popen(cmd, stdin=PIPE), после чего из скрипта передаешь в подпроцесс пароль через PIPE

Aswed ★★★★★
()