2014-05-20 67 views
1

我正在嘗試搭建4棵覆盆子梨樹莓派。 我正在編寫一個腳本來向系統添加新用戶,以便用戶可以添加到所有4 Pis上,而無需多次輸入。我使用的命令是adduser,我使用ssh將用戶添加到所有4 Pis。這是腳本中的那條線的外觀:如何使用bash腳本編寫密碼?

echo `ssh [email protected] "sudo adduser --shell /bin/bash user1"` 

這是我用來添加新用戶的線路。但是,之後的命令是我需要更改密碼的地方。如果我使用

sudo passwd user1 

在腳本中,對於每個Pi,它會提示用戶輸入密碼4次。我不希望發生這種情況。有沒有辦法讓用戶輸入一次密碼並將其存儲在一個變量中並將其提供給passwd命令?

+0

SSH以root身份登錄? – Biffen

+0

另外,爲什麼使用反引號而不是命令來回顯? – Biffen

+0

我終於設法解決它通過使用useradd而不是adduser並提供一個選項供用戶輸入密碼並使用perl中的crypt()函數對其進行加密。這些問題是有幫助的: http://stackoverflow.com/questions/1020534/useradd-using-crypt-password-generation http://stackoverflow.com/questions/714915/using-the-passwd-command-from- shell-script – Ahmis

回答

0

假設在Pi上仍然沒有「useradd」,我建議你開始研究adduser的命令行參數?

adduser <username> -p <password> ... 
+0

實際上,也有useradd命令。我只是用adduser,因爲我熟悉那個命令。在adduser中有--disable-password選項,但我認爲只能禁用密碼,並允許你通過ssh或其他東西登錄。我真的不明白它是如何工作的。 useradd命令有一個--password選項,我可以通過該選項設置默認密碼。我想我現在會嘗試。謝謝! – Ahmis

+0

@ user3657965:我只知道--disabled-password,如果服務器的管理員不想知道用戶的密碼,那麼該密碼很有用。但是,這仍然需要一些操作,因爲用戶應該使用passwd在帳戶上設置密碼。 如果你真的想自動化用戶創建過程,我會建議useradd和--passwd選項。我在準備預配置的Samba服務器時經常這樣做...... –

+0

謝謝。我現在正在嘗試這樣做,但我在加密密碼時遇到了很大的問題。從來沒有處理過加密,我有點失落,crypt()函數顯然適用於C?有關如何解決此問題的任何建議? – Ahmis

0

這裏的一個方式,通過SSH與sudo在遠程端執行許多命令(如果登錄爲root不是一個選項):

#!/bin/bash 

ssh [email protected] 'sudo bash -es' <<EOF 
command 1 
command 2 
EOF 

-e爲「失敗失敗」(可選)。

-s要從STDIN讀取。

(我給它一個快速的嘗試,它似乎工作。)

編輯

-x(我喜歡的反饋)嘗試,但它使輸出亂碼,可能是因爲STDIN和STDERR「不同步」(可以通過2>&1「解決」)。

+0

謝謝你的回答。我不確定這會對我有幫助。假設命令1是adduser並且命令2是passwd,那麼每次執行這三行時(這在我的情況下是4次),用戶仍然會被提示輸入新密碼。 – Ahmis

+0

@ user3657965哦,那我一定誤會了。 – Biffen