使用root权限从python脚本调用shell脚本

时间:2011-06-06 14:34:34

标签: python linux shell root sudo

我正在尝试使用call命令从python脚本(shell_script.sh)调用shell脚本python_script.pyshell_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)用sudo调用python - sudo python python_script.py

b)在调用方法内部调用sudo - subprocess.call(['sudo' '/complete_path/shell_script.sh', 'param1', 'param2', 'param3'], shell=True

解决此问题的最佳方法是什么。

感谢。

2 个答案:

答案 0 :(得分:1)

我在python_script.py中放置逻辑来检查其UID,如果没有以root身份执行则失败。 if os.getuid() != 0:。这将确保它只以root身份运行,以root身份登录或sudo运行。

如果在尝试执行python_script.py时获得权限被拒绝,则需要在其上设置执行位。 chmod +x python_script.py

答案 1 :(得分:0)

您是否尝试过在this问题中发布的解决方案?我打赌他们会指出你最好的方向。