3

我正在尝试自动在 .htpasswd 中为 Apache 设置用户密码,但这个脚本似乎并没有真正设置密码。我错过了什么?谢谢!

#!/bin/bash

PASSWORD=`tr -dc a-z0-9_ < /dev/urandom | head -c 10`

cat << EOF | /usr/bin/expect
spawn /usr/bin/htpasswd -c /var/.htpasswd testuser
expect "assword:"
send "$PASSWORD\r"
expect "assword:"
send "$PASSWORD\r"
EOF

echo -e "\nPassword set to: $PASSWORD\n"
4

1 回答 1

5

-b您可以使用该标志在命令行上指定密码。

#!/bin/bash

PASSWORD=`tr -dc a-z0-9_ < /dev/urandom | head -c 10`
htpasswd -cb /var/.htpasswd testuser $PASSWORD
echo Password set to: $PASSWORD

# output:
# Adding password for user testuser
# Password set to: gzu00n4lp8

为澄清起见,这是一个使用的版本expect

#!/bin/bash

PASSWORD=`tr -dc a-z0-9_ < /dev/urandom | head -c 10`

expect << EOF
spawn htpasswd -c /var/.htpasswd testuser          
expect { 
    "New password:" { send "$PASSWORD\r"; exp_continue }
    "Re-type new password:" { send "$PASSWORD\r"; exp_continue }    
}                      
EOF  

echo Password set to: $PASSWORD
于 2012-12-29T02:53:28.837 回答