Answers:
参见/programming/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 = foo,realm = bar和password = baz,则上面的命令将产生:
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigest不会做任何神奇甚至不寻常的事情,它只会以正确的格式输出用户,领域和密码,就像上面的命令一样。
使用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"
检查PHP中的“ proc_open”功能 http://fr.php.net/manual/zh/function.proc-open.php
您可以选择运行htdigest,然后在管道中发送新密码。
您可能会发现/创建一个执行htdigest工作的PHP函数。使用proc_open应该更容易...