Вызов сценария оболочки из сценария Python с использованием привилегий root - PullRequest
1 голос
/ 06 июня 2011

Я пытаюсь вызвать сценарий оболочки shell_script.sh из сценария Python (python_script.py) с помощью команды call.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 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)

Как лучше всего решить эту проблему.

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Я бы поместил логику в python_script.py, чтобы проверить его UID и потерпеть неудачу, если не выполняется как root. if os.getuid() != 0:. Это обеспечит его запуск только от имени пользователя root, ether от имени пользователя root или sudo.

Если при попытке выполнить python_script.py вам отказано в разрешении, вам необходимо установить для него бит выполнения. chmod +x python_script.py

0 голосов
/ 06 июня 2011

Вы пробовали решения, опубликованные в этом вопросе?Держу пари, что они укажут вам лучшее направление.

...