Command-Line

腳本 htdigest -c /path/to/file/使用者___你s和ruserBash 中的使用者 $password

  • November 9, 2017

我希望能夠使用變數 $password 中的密碼編寫腳本。

htdigest -c /etc/apache2/pw/$user $user $password

目前它要求我手動輸入密碼;這是不可能的,因為它將由 PHP 腳本自動設置。有人可以告訴我如何編寫腳本嗎?還是等效的腳本功能?

請參閱https://stackoverflow.com/questions/645659/how-do-you-htdigest-400-user-accounts

根據票數最高的答案中的一項建議,最簡單的方法可能是:

digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" | 
          md5sum | awk '{print $1}' )"

printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"

md5sum從 GNU coreutils 使用過,awk而不僅僅是md5因為它是我在我的系統上安裝的,而且我不會費心找出包含哪個包/usr/bin/md5- 你也可以使用sha512sum或其他散列程序。

例如,如果user=foorealm=barpassword=baz那麼上面的命令將產生:

foo:bar:5bf2a4095f681d1c674655a55af66c5a

htdigest 沒有做任何神奇甚至不尋常的事情——它只是以正確的格式輸出使用者、領域和密碼……就像上面的命令一樣。

刪除給定 user:realm 的摘要而不是只添加一個,可以使用 sed 輕鬆完成。

sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"

並且更新/更改使用者的摘要:領域也可以使用 sed 結合上述方法來生成摘要行。例如

digest="$( printf "%s:%s:%s" "$user" "$realm" "$new_password" | 
          md5sum | awk '{print $1}' )"

sed -i -e "/^$user:$realm:/ c$user:$realm:$digest" "/etc/apache2/pw/$user"

引用自:https://unix.stackexchange.com/questions/45964