2016-11-05 53 views
0

我需要發出「sudo service nginx status」來檢查服務狀態。我有以下幾點:如何使用python發出sudo命令

import commands 
service output = commands.getoutput("sudo service nginx status") 

,但我得到「沒有TTY出現,也沒有askpass程序規定」

是否有人明白這一點?

回答

1

使用commands.getoutput使得不可能提供sudo命令所需的用戶輸入。 該名稱可以自我解釋,您只對命令輸出感興趣。 stdin已關閉。

有幾種方案來解決這個:

  1. 關閉對於推出這個python腳本sudo的用戶的密碼驗證。 (閱讀有關的/ etc/sudoers文件)

  2. 管密碼:(不安全/壞的解決方案,但易) 「回聲YOURPASS |須藤...」

  3. 退房subprocess.popen允許您提供無論是從輸入控制檯或來自文件 https://docs.python.org/2/library/subprocess.html#popen-constructor