Gou*_*ash 8 command-line scripting password apache-httpd
我希望能够使用变量 $password 中的密码编写脚本。
htdigest -c /etc/apache2/pw/$user $user $password
Run Code Online (Sandbox Code Playgroud)
目前它要求我手动输入密码;这是不可能的,因为它将是由 PHP 脚本自动设置的。有人可以告诉我如何编写脚本吗?或等效的可编写脚本的函数?
基于最高投票答案中的建议之一,最简单的方法可能是:
digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" |
md5sum | awk '{print $1}' )"
printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"
Run Code Online (Sandbox Code Playgroud)
我md5sum
从 GNU coreutils 中使用过,awk
而不仅仅是md5
因为它是我在系统上安装的东西,而且我无法费心找出包含哪个包/usr/bin/md5
- 您也可以使用sha512sum
或其他散列程序。
例如,如果user=foo、realm=bar和password=baz那么上面的命令将产生:
foo:bar:5bf2a4095f681d1c674655a55af66c5a
Run Code Online (Sandbox Code Playgroud)
htdigest 不会做任何神奇甚至不寻常的事情——它只是以正确的格式输出用户、领域和密码……就像上面的命令一样。
删除给定 user:realm 的摘要而不是仅仅添加一个,可以使用 sed 轻松完成。
sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"
Run Code Online (Sandbox Code Playgroud)
更新/更改 user:realm 的摘要也可以使用 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"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4685 次 |
最近记录: |