2011-06-06 264 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