2015-09-24 170 views
0

我有這個腳本,用戶可以在其中透明地使用passwd更改其密碼。該腳本本身是由根執行,與Linux passwd命令:格式化輸出

su - <user> -c "script" 

啓動它,我知道它可能不是非常安全的一個啓動腳本的方式,但是這是怎麼回事,我沒有lattitude改變的那部分。

我的問題是,調用時,passwd文件顯示以下內容:

Changing password for user <user>. 
Changing password for <user> 
current (UNIX) password: 
New UNIX password: 
Retype new UNIX password: 

有幾件事情,這裏要注意:

  1. 爲什麼它甚至有兩行了麼?看起來,第一個顯示在root用戶密碼被passwd時顯示,第二個用戶在自己的密碼被passwd時顯示。它能成爲解釋的開始嗎?
  2. 我需要從這些提示中篩選出一些單詞。我想過使用greps和seds的組合,但是這裏有一個訣竅:兩條第一條線似乎是輸出到stdout,而其他的則是stderr。當我嘗試將stderr重定向到stdout來處理它時,什麼都不顯示了。

有沒有人有關於這種情況的任何答案或提示?非常感謝。

(這裏第一個問題,所以不要猶豫,要求更多信息。)

+1

我複製腳本的將是不錯 –

+0

有時密碼提示會直接寫入您的tty,因此您可能無法輕鬆隱藏它們。我建議,如果你畫在這個特定的角落裏,你可以檢查'expect'語言。 –

+0

對不起@RolfofSaxony,腳本的最低版本基本上只是調用passwd | grep -v用戶(單詞用戶,不是用戶名)。 我會看看期待。謝謝。 – Vartaghan

回答

0

嘗試鍵控:

su - vartaghan -c passwd 

到命令行,然後對比,與鍵控:

passwd 

到命令行上。

答案就在那裏。由於您使用su來執行該命令,因此需要輸入密碼,然後passwd命令變爲活動狀態,這需要重新輸入密碼。
您最好的選擇是通過發出passwd命令來改變爲您的用戶運行的menu啓動此密碼更改外殼的方式。

編輯: 如果你想擺脫的I/O的使用是這樣的:

(echo $1; echo $2; echo $2) | passwd &>/dev/null 

這就要求你運行該腳本myscript oldpassword newpassword