$password変数にパスワードを含むスクリプトを作成したいと思います。
htdigest -c /etc/apache2/pw/$user $user $password
現在はパスワードを手動で入力する必要があります。パスワードはPHPスクリプトによって自動的に設定されるため、不可能です。誰かがこれをスクリプトする方法を教えてもらえますか?それとも同等のスクリプト可能な機能ですか?
ベストアンサー1
バラよりhttps://stackoverflow.com/questions/645659/how-do-you-htdigest-400-user-accounts
最も多くの投票を受けた回答の提案の1つに基づいて、最も簡単な方法は次のとおりです。
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
例えばユーザー=foo、エリア=バーとパスワード=bazこれにより、上記のコマンドは次のように生成します。
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigest は魔法や珍しい操作を行いません。上記のコマンドと同様に、ユーザー、ゾーン、パスワードを正しい形式で出力します。
sedを使用すると、与えられたuser:realmのダイジェストを追加するのではなく、簡単に削除できます。
sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"
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"