2011-06-06 331 views
1

我试图使用call命令从python脚本(python_script.py)调用shell脚本shell_script.shshell_script.sh调用需要root访问权限的可执行文件才能执行。使用root权限从python脚本调用shell脚本

python_script.py使用subprocess.call()调用shell_script.sh

见下文: subprocess.call(['/complete_path/shell_script.sh', 'param1', 'param2', 'param3'], shell=True)

当我尝试执行python脚本python_script.py它给了我拒绝的权限。

我试过不同的方法。

一)使用sudo调用蟒蛇 - sudo python python_script.py

B)调用须藤到呼叫方法内 - subprocess.call(['sudo' '/complete_path/shell_script.sh', 'param1', 'param2', 'param3'], shell=True

什么是解决的最佳方式。

谢谢。

回答

1

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

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

+0

我已经试过两种。它仍然不起作用。 – 2011-06-06 16:02:39

0

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

+0

'gksudo'是交互式的,在这个用例中没有用户交互。 – 2011-06-06 16:00:43