9

負荷テストを行うために 400 人のユーザーのユーザー アカウントをどのように生成しますか?

Htdigest は毎回パスワードを入力するように強制します。次のような dos パイプを試しました

echo password > htdigest -c realm username%1 

htdigest -c realm username%1 < password.txt 

しかし、それは機能していません...

4

3 に答える 3

17

また、trac が Web サイトで配布している htdigest パスワード用の python スクリプトを確認して、自動化することもできます。

Apache を使用しない htdigest パスワードの生成

彼らはまた、これらの行に沿った何かが機能することを示唆しています:

md5sum ユーティリティを使用して、次のような方法でダイジェスト パスワード ファイルを生成できます。

$ printf "${user}:trac:${password}" | md5sum - >>user.htdigest

末尾の「-」を手動で削除し、「to-file」から行頭に「${user}:trac:」を追加します。


これを FreeBSD でテストしましたが、これが Linux または Windows で動作するかどうかはわかりません。そのため、少し変更する必要があるかもしれません。

(echo -n "user:realm:" && echo -n "user:realm:testing" | md5) > outfile

出力ファイルには以下が含まれます:

user:realm:84af20dd88a2456d3bf6431fe8a59d16

htdigest でも同じこと:

htdigest -c outfile2 realm user

outfile2 の出力

user:realm:84af20dd88a2456d3bf6431fe8a59d16

どちらも同じなので、コマンド ラインの実装が正しいことが証明されます。

于 2009-03-14T09:55:41.537 に答える
7

(余談: unix/linux では、最初のものは次のようになります。

echo password | htdigest -c realm username$1

)

htdigest にはパスワードを渡す良い方法がないためexpect、プロセスを自動化するために使用します。

http://www.seanodonnell.com/code/?id=21 の例:

#!/usr/bin/expect
#########################################
#$ file: htpasswd.sh
#$ desc: Automated htpasswd shell script
#########################################
#$
#$ usage example:
#$
#$ ./htpasswd.sh passwdpath username userpass
#$
######################################

set htpasswdpath [lindex $argv 0]
set username [lindex $argv 1]
set userpass [lindex $argv 2]

# spawn the htpasswd command process
spawn htpasswd $htpasswdpath $username

# Automate the 'New password' Procedure
expect "New password:"
send "$userpass\r"

expect "Re-type new password:"
send "$userpass\r"

必要に応じてこれを Windows 用に変換することは、ユーザーの課題として残されています。

于 2009-03-14T09:53:14.520 に答える
1

これは、ユーザー名のリストを読み取り、それぞれのパスワードをランダムに生成し、それらを htdigest ファイルとプレーン テキスト ファイルの両方に出力するスクリプトです。Linux でテスト済みですが、他のシステムでは変更が必要になる場合があります。特に、 でmd5sumある可能性がありmd5head常に-cフラグを受け入れます。

#!/bin/bash

# auth realm for digest auth
AUTH_REALM=MyRealm

# file locations

# a file containing a list of user names,
# one name per line, e.g.,
# $ cat users.txt
# joe
# curly
# larry
USER_FILE=users.txt

# htdigest file, needs to exist
HTDIGEST_FILE=passwd.htdigest

# insecure password file
PASSWD_FILE=passwd.txt

# read the names from the user file
while read username
  do
  # generate a pseudo-random password
  rand_pw=`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8`

  # hash the username, realm, and password
  htdigest_hash=`printf $username:$AUTH_REALM:$rand_pw | md5sum -`

  # build an htdigest appropriate line, and tack it onto the file
  echo "$username:$AUTH_REALM:${htdigest_hash:0:32}" >> $HTDIGEST_FILE

  # put the username and password in plain text
  # clearly, this is terribly insecure, but good for
  # testing and importing
  echo "$username:$rand_pw" >> $PASSWD_FILE
done < $USER_FILE

入力と結果は次のようになります。最初はユーザー名ファイルです。

$ cat users.txt 
joe
curly
larry

スクリプトの実行:

$ ./load_users.bash 

結果の htdigest ファイル:

$ cat passwd.htdigest
joe:MyRealm:2603a6c581f336f2874dbdd253aee780
curly:MyRealm:fd3f9d87bba654439d5ba1f32c0286a8
larry:MyRealm:c1c3c0dc50a9b97e9f7ee582e3fce892

そしてプレーンテキストファイル:

$ cat passwd.txt 
joe:aLnqnrv0
curly:3xWxHKmv
larry:7v7m6mXY
于 2009-06-05T18:23:59.927 に答える