スクリプトhtdigest -c / path / to / file / $ user $ user $ password in Bash


8

変数$ passwordのパスワードを使用してスクリプトを作成できるようにしたいと思います。

htdigest -c /etc/apache2/pw/$user $user $password

現時点では、手動でパスワードを入力するように求められます。これは、PHPスクリプトによる自動セットアップになるため、不可能です。誰かがこれをスクリプト化する方法を教えてくれませんか?または同等のスクリプト可能な関数?

回答:


9

/programming/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、または他のハッシュプログラム。

たとえば、user = foorealm = 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"

すごい:Pはファイルがまだ存在しないときにいくつかの問題があったので、これを実行する前にファイルを作成します:o
Mr. King

0

PHP http://fr.php.net/manual/en/function.proc-open.phpの「proc_open」関数を確認して ください

オプションでhtdigestを実行し、パイプに新しいパスワードを送信できます。

htdigestジョブを実行するPHP関数を見つけて作成できます。proc_openを使用するよりも簡単です...


新しいapacheユーザーを作成するよりもはるかに複雑です:pを使用するのはオプションではありません
キング氏
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.