2016-05-18 79 views
1

我在使用miniedit(mininet的UI)和ONOS作爲SDN控制器的SDN上執行POC,我想在運行拓撲時從miniedit調用ONOS,因此使用以下在python無法從root用戶啓動ONOS SDN控制器

os.system("gnome-terminal -e 'bash -c \"/home/paxterra/onos/tools/dev/bin/onos-karaf; exec bash\"' &") 

的代碼行這個調用ONOS如果我執行它作爲普通用戶,但將引發錯誤,因爲這存在於miniedit.py代碼和我跑miniedit.py作爲超級用戶。

Error : /home/paxterra/onos/tools/dev/bin/onos-karaf: line 7: onos-setup-karaf: command not found 

我試圖設置環境變量PATH="/home/paxterra/onos/tools/dev/bin/",然後再次嘗試命令,它給出了同樣的錯誤。

任何人都可以請幫我解決這個問題。 ?

+0

您是否嘗試過使用子流程模塊執行命令? (subprocess.call)? – telina

+0

是的,我嘗試了subprocess.call()和subprocess.Popen()以及它沒有工作。 – Nisha

回答

0

使用sudo時,默認情況下不保留路徑變量。 Sudo有它自己的路徑變量。這是一個安全設計。

因爲onos-setup-karaf不在路徑(即您使用完整路徑onos-karaf但onos - 設置 - karaf可能不是在你的工作目錄),你應該嘗試執行sudo env "PATH=$PATH" miniedit或者無論你啓動該程序,但你需要保留路徑變量。