2009-03-14 1 views
9

Come si generano account utente per 400 utenti per eseguire un test di carico?Come htdigest 400 account utente?

htdigest forze di digitare una password ogni volta, ho provato dos tubi come

echo password > htdigest -c realm username%1 

htdigest -c realm username%1 < password.txt 

ma non funziona ...

risposta

6

(a parte: On Unix/Linux il primo dovrebbe essere:

echo password | htdigest -c realm username$1 

)

Come htdigest non hai alcun modo piacevole per passare il pas spada dentro, vorrei usare expect per automatizzare il processo.

An example from 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" 

E 'lasciato come esercizio per l'utente a convertire questo per Windows, se necessario.

16

È anche possibile controllare lo script python che trac distribuisce sul loro sito web per le password htdigest, è possibile automatizzare:

Generating htdigest passwords without Apache

Essi suggeriscono anche qualcosa in questo senso funziona:

E 'possibile usare l'utility md5sum per generare digerire-password di file usando tale metodo:

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

ed eliminare manualmente "-" dalla fine e aggiungere "$ {utente}: trac:" all'inizio della riga da 'su file'.


Ho testato questo su FreeBSD, non so se questo funzionerà su Linux o Windows, quindi potrebbe essere necessario modificare un po ':

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

outfile contiene:

user:realm:84af20dd88a2456d3bf6431fe8a59d16 

Stessa cosa con htdigest:

htdigest -c outfile2 realm user 

uscita in outfile2

user:realm:84af20dd88a2456d3bf6431fe8a59d16 

sono entrambi lo stesso, dimostrando così la correttezza dell'attuazione linea di comando!

+3

Da un GNU/Linux potrebbe usare (adattato dal comando FreeBSD sopra): '(echo -n "utente: regno:" && echo -n "clienti: regno: passwd" | md5sum - | cut -d '' -f1) >> outfile' – blerontin

1

Ecco uno script che leggerà un elenco di nomi utente, genererà una password casuale per ciascuno e li invierà sia a un file htdigest sia a un file di testo normale. È stato testato su Linux, ma potrebbe essere necessario modificarlo per altri sistemi. In particolare, md5sum può essere md5 e head accetta sempre il flag -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 

Questo è ciò che l'input ed i risultati sembrano, primo file i nomi degli utenti:

$ cat users.txt 
joe 
curly 
larry 

Esecuzione dello script:

$ ./load_users.bash 

Il file htdigest risultante:

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

E il testo semplice fi Le:

$ cat passwd.txt 
joe:aLnqnrv0 
curly:3xWxHKmv 
larry:7v7m6mXY