Bashでhtdigest -c /path/to/file/$user $user $passwordスクリプトを作成する

Bashでhtdigest -c /path/to/file/$user $user $passwordスクリプトを作成する

$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"

私はmd5sumGNU coreutilsを使用していますが、それが私のシステムにインストールされていて、どのパッケージが含まれているのかを見つけるのが面倒だからではawkありません。または、他のハッシュプログラムを使用することもできます。md5/usr/bin/md5sha512sum

例えばユーザー=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"

おすすめ記事