2009-03-14 3 views
9

¿Cómo se generan cuentas de usuario para que 400 usuarios realicen una prueba de carga?¿Cómo hdiges 400 cuentas de usuario?

fuerzas htdigest que escriba una contraseña cada vez, he tratado DOS tuberías como

echo password > htdigest -c realm username%1 

htdigest -c realm username%1 < password.txt 

pero no está funcionando ...

Respuesta

6

(Aparte: En Unix/Linux el primero debe ser:

echo password | htdigest -c realm username$1 

)

Como htdigest no tiene ninguna buena manera de pasar los pas espada adentro, usaría expect para automatizar el proceso.

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" 

Se deja como ejercicio para el usuario para convertir esta para Windows, si es necesario.

16

También puede comprobar fuera de la secuencia de comandos de Python que trac distribuye en su página web para las contraseñas htdigest, a continuación, puede automatizarlo:

Generating htdigest passwords without Apache

También sugieren algo en este sentido va a funcionar:

es posible utilizar la utilidad md5sum para generar digerir-contraseña del archivo utilizando dicho método:

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

y elimine manualmente "-" del final y agregue "$ {user}: trac:" al inicio de la línea de 'a-archivo'.


He probado esto en FreeBSD, no estoy seguro si esto funcionará en Linux o Windows, por lo que es posible que tenga que modificar un poco:

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

archivo de salida contiene:

user:realm:84af20dd88a2456d3bf6431fe8a59d16 

lo mismo con htdigest:

htdigest -c outfile2 realm user 

salida en archivosalida2

user:realm:84af20dd88a2456d3bf6431fe8a59d16 

Ellos son a la vez la misma corrección, demostrando así de la aplicación de línea de comandos!

+3

Por un GNU/Linux puede utilizar (adaptado del comando de FreeBSD anterior): '(echo -n "usuario: reino:" && echo -n "usuario: reino: passwd" | md5sum - | cut -d '' -f1) >> outfile' – blerontin

1

Aquí hay una secuencia de comandos que leerá en una lista de nombres de usuario, generará una contraseña aleatoria para cada uno y los enviará a un archivo htdigest y a un archivo de texto sin formato. Ha sido probado en Linux, pero puede necesitar ser modificado para otros sistemas. En particular, md5sum puede ser md5, y head siempre acepta la bandera -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 

Esto es lo que la entrada y los resultados parecen, primero el archivo de nombres de usuario:

$ cat users.txt 
joe 
curly 
larry 

La ejecución del script:

$ ./load_users.bash 

El archivo htdigest resultante:

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

Y el texto sin formato fi LE:

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