我正在尝试使用call命令从python脚本(shell_script.sh
)调用shell脚本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脚本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
)
解决此问题的最佳方法是什么。
感谢。
答案 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问题中发布的解决方案?我打赌他们会指出你最好的方向。