2013-04-24 69 views
0

我做了這個小python腳本更新(但還沒有把所有的命令,只是想嘗試一個更新命令)我的系統,但它進入root/superuser模式後,行爲不端。行爲不當Python系統腳本

我想知道是否有人可以指出問題/錯誤。

import os 

print "\t Entering Upgrade Mode " 

if os.system("su")==1: 
     print "passed" 
     os.system("apt-get update") 
     os.system(exit) 
else: 
     print "failed" 
+0

也許你以某種方式導致apt-get更新來調用你的腳本? – Antimony 2013-04-24 17:48:08

+0

是否有腳本命名爲'su'? – 2013-04-24 17:48:16

+0

nah它被命名爲** l_update ** – 2013-04-24 17:49:02

回答

2

我懷疑電話su是問題。這個調用在退出子shell之前不會退出(在這種情況下,將你從root登錄)。這意味着任何後續調用都將作爲(可能)正常用戶再次執行。

嘗試以下方法:

import os 

print "\t Entering Upgrade Mode " 

os.system("sudo apt-get update") 

備選地su要求-c標誌來處理後續命令,例如

su -c "echo Hello" 

雖然你應該使用subprocess; os.system已棄用。

+0

我非常確定,註銷根目錄解鎖腳本的事實只是附帶的。 'system'調用將命令發送到運行Python代碼的shell的子shell,然後阻塞直到該子shell返回。運行'su'的子shell在你退出它之前不會返回,所以Python程序會無限期地阻塞'system'調用。 – 2013-04-24 18:13:12

+0

@ sr2222 - 我們說的是同樣的東西,我應該使用更精確的措辭:當我說從root登錄時,我指的是註銷子shell,即鍵入exit! – jmetz 2013-04-24 18:15:10

+0

是的,只是你的措辭聽起來像是提升的特權是問題,而不是仍在運行的子shell。 – 2013-04-24 18:17:54