Estoy leyendo a marchas forzadas porque me corre mucha prisa realizar un script, pero voy a trompicones y me atraganto.
Estoy intentando modificar un fichero ldif para la entrada masiva de usuarios en LDAP. El contenido del mismo podría ser como el siguiente
- Código: Seleccionar todo
dn: uid=jperez,ou=People,dc=ejemplo,dc=com
uid: jperez
objectclass: account
objectclass: top
uidnumber: 512
gidnumber: 300
homedirectory: /home/jperez
userpassword: jperez
dn: uid=domingo,ou=People,dc=ejemplo,dc=com
uid: domingo
objectclass: account
objectclass: top
uidnumber: 512
gidnumber: 300
homedirectory: /home/domingo
userpassword: domingo
dn: uid=pepe,ou=People,dc=ejemplo,dc=com
uid: pepe
objectclass: account
objectclass: top
uidnumber: 512
gidnumber: 300
homedirectory: /home/pepe
userpassword: pepe
Tiene varios bloques iguales y tengo que encontrar solamente las líneas que contiene la cadena "userpassword" y después recoger el nombre que viene a continuación de los dos puntos (:) y pasarle otra función que me sustituya dicho nombre por el mismo codificado, algo que he encontrado como lo siguiente:
Using perl Syntax Highlighting
#!/usr/bin/perl
$claro=$ARGV[0];
chomp $claro;
$salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
printf "%s\n", crypt("$claro", "$salt");
$claro=$ARGV[0];
chomp $claro;
$salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
printf "%s\n", crypt("$claro", "$salt");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Sé que con grep() me devuelve las líneas que contiene dicha cadena.
¿Me trata cada una de ellas con un "foreach" para la sustitución individual de cada línea y nombre? ¿Cómo separo el trozo de cadena que me hace falta? ¿Cómo abro el fichero?
¿Podéis ayudarme con el código? Muchas gracias de antemano.