3

Apache の .htpasswd でユーザーのパスワードの設定を自動化しようとしていますが、このスクリプトは実際にはパスワードを設定していないようです。私は何が欠けていますか?ありがとう!

#!/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 に答える