我很抱歉如果這是一個重複問題,我嘗試搜索網頁,但大多數人使用sudo。執行subprocess.Popen時掛起('su',shell = True)
但是,我不能使用sudo,我可以使用'su'以root身份登錄。我正在執行以下代碼:
try:
p_su = subprocess.Popen('su', stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=True)
out_su, err_su = p_su.communicate()
# >>> The program hangs here. <<<
except:
print "Unable to login as root (su). Consult the Software Engineer."
sys.exit()
print out_su
if "Password" in out_su:
try:
p_pw = subprocess.Popen('password', stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=True)
out_pw, err_pw = p_pw.communicate()
except:
print "Unable to login as root (password). Consult the Software Engineer."
sys.exit()
在上面提到的點上,程序至少停留30分鐘以上。當我在Linux終端上運行「su」時,需要一兩秒鐘,有時候會少一點。
它'_yybe_掛起爲'su'嘗試在控制檯(_tty_)上與用戶交互?另一方面,在我的Linux系統上,當_stdin_沒有連接到_tty_:'echo echo | su' =>'su:必須從終端運行# – 2014-08-28 14:18:03
您可能需要爲此使用['pexpect'](http://pexpect.readthedocs.org/en/latest/)。 – dano 2014-08-28 14:19:16
pexpect是否帶有Python-2.7.5?如果沒有,那麼我就不能使用它。 – Everlight 2014-08-28 14:21:35