Я пытаюсь вызвать оболочку script shell_script.sh
из python script (python_script.py
) с помощью команды вызова. shell_script.sh
вызывает исполняемый файл, который требует доступа root для выполнения.
python_script.py
вызывает shell_script.sh
с помощью subprocess.call()
.
См. ниже:
subprocess.call(['/complete_path/shell_script.sh', 'param1', 'param2',
'param3'], shell=True)
Когда я пытаюсь выполнить python script python_script.py
, он разрешает мне разрешение.
Я пробовал разные способы.
a) Вызов python с sudo - sudo python python_script.py
b) Вызывать sudo внутри метода вызова - subprocess.call(['sudo' '/complete_path/shell_script.sh', 'param1', 'param2',
'param3'], shell=True
)
Какой лучший способ решить эту проблему.
Спасибо.
Я бы поместил логику в python_script.py
, чтобы проверить его UID и сбой, если не выполняется как root. if os.getuid() != 0:
. Это гарантирует, что он работает только от root, ether от корневого входа или sudo.
Если вы получаете отказ в доступе при попытке выполнить python_script.py
, вам нужно установить бит выполнения на нем. chmod +x python_script.py
Вы пробовали решения, размещенные в этом вопросе? Я соглашусь, что они укажут вас в лучшем направлении.