2012-08-30 56 views
2

我在寫一個bash腳本,可能需要su才能運行命令。像這個 -有沒有辦法看到輸入su密碼的字符

回聲「安裝XYZ系統」 回聲「請輸入根密碼 - 」 蘇-c「java命令./Installer.jar com.company.FmMain;退出」

有沒有辦法讓su打印字符(星號或其他),以便用戶在輸入密碼時有一些視覺反饋?

+0

是的。抓住「su」的來源,重寫它,以便反饋並使用戶安裝它。 – 2012-08-30 20:55:33

+0

請嘗試gksu或gksudo? – robbrit

+0

我不認爲有任何標準命令,但是您可能會在superuser.com上找到更多幫助。 – teppic

回答

1

您必須首先將密碼讀取到變量中,而不是su之外。有關使用read完成此操作的示例,請參閱問題How do I echo stars (*) when reading password with `read`?

然後,您必須使用expect將此密碼傳遞給su提供的密碼提示。有關執行類似操作的示例,請參見How do I use expect to connect via ssh to a system and change the password of the host system?問題。

+0

非常好,非常感謝。這些鏈接正是我所期待的。 – SystemCalls

1

我不會在Linux中推薦屏蔽密碼,它違背了預期的正常行爲,並且可能會混淆用戶,特別是如果他們是有經驗的Linux用戶。閱讀密碼的標準方法是在接受密碼之前關閉回顯並禁用特殊字符(如轉義序列等)的處理(這通常通過設置終端屬性 - tcsetattr等來完成),這是su的工作方式。

有標準庫函數,如將getpass這對於你這樣做: http://www.gnu.org/s/hello/manual/libc/getpass.html

試圖實現自己這樣做有潛在的安全implimentations的方法。我強烈警告說要這樣做。

相關問題