変数$ passwordのパスワードを使用してスクリプトを作成できるようにしたい。
htdigest -c /etc/Apache2/pw/$user $user $password
現時点では、手動でパスワードを入力するように求められます。 PHPスクリプトによる自動セットアップになるため、これは不可能です。誰かがこれをスクリプト化する方法を教えてもらえますか?または同等のスクリプト可能な関数ですか?
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
ではなくmd5
from GNU coreutilsとawk
を使用しました。これは、システムにインストールしたものであり、インストールできなかったためです。どのパッケージに/usr/bin/md5
が含まれているかをわざわざ見つけてください。sha512sum
または他のハッシュプログラムを使用することもできます。
例えばifuser = foo、realm = bar、およびpassword = baz次に、上記のコマンドは以下を生成します。
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigestは、魔法のようなことや異常なことは何もしません。上記のコマンドのように、ユーザー、レルム、パスワードを正しい形式で出力するだけです。
特定のuser:realmのダイジェストを追加するだけでなく、削除することは、sedを使用して簡単に行うことができます。
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"
PHP http://fr.php.net/manual/en/function.proc-open.php の 'proc_open'関数を確認してください
オプションでhtdigestを実行してから、パイプに新しいパスワードを送信できます。
おそらく、htdigestジョブを実行するPHP関数を見つけて作成できます。proc_open...を使用するよりも簡単なはずです。