From cmolina at net-uno.net Wed Mar 5 17:41:19 2003 From: cmolina at net-uno.net (Carlos Molina Garcia) Date: Wed Aug 4 23:59:35 2004 Subject: Enviando un format por mail Message-ID: <3E668B1F.5060908@net-uno.net> Saludos a todos Me encuentro haciendo unos scripts, y me tope con algo que realmente no encuentro como solucionar de manera sencilla y eficiente. Se trata simplemente de enviar un formato por mail. El ejemplo siguiente servira para ver el formato format STDOUT_TOP = Item1 Directorio Status --------------- ------------------------------------------------ ------ . format STDOUT = @<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<< $key, $field, $summary{$key}{$field} . despues de hacer ciertas manipulaciones con las variables involucradas en el format, sigo con write STDOUT; El asunto es que deseo enviar por correo la salida de este format, pero como la funcion write solo funciona a nivel de filehandles (I/O), no encuentro una manera sencilla de hacerlo sin necesidad de escribir un archivo en disco, para despues enviarlo por correo , y posteriormente borrarlo. Alguien tiene alguna ocurrencia al respecto..?? Saludos Carlos ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Thu Mar 6 06:36:32 2003 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:35 2004 Subject: Enviando un format por mail In-Reply-To: <3E668B1F.5060908@net-uno.net> Message-ID: On Wed, 5 Mar 2003, Carlos Molina Garcia wrote: > Me encuentro haciendo unos scripts, y me tope con algo que realmente no > encuentro como solucionar de manera sencilla y eficiente. > Se trata simplemente de enviar un formato por mail. > > El ejemplo siguiente servira para ver el formato > > format STDOUT_TOP = > > Item1 Directorio > Status > --------------- ------------------------------------------------ > ------ > . > format STDOUT = > @<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< > @<<<<<<<< > $key, $field, $summary{$key}{$field} > . > > despues de hacer ciertas manipulaciones con las variables involucradas > en el format, sigo con > write STDOUT; > > El asunto es que deseo enviar por correo la salida de este format, pero > como la funcion write solo funciona a nivel de filehandles (I/O), no > encuentro una manera sencilla de hacerlo sin necesidad de escribir un > archivo en disco, para despues enviarlo por correo , y posteriormente > borrarlo. El nombre de un formato est? en relaci?n con el filehandle sobre el cual es aplicable. Crea un filehandle hacia un pipe que env?e correo y define el formato con el mismo nombre del filehandle. open(MAIL,"| mail foo@bar.com"); ... write MAIL; ... format MAIL_TOP = ... . format MAIL = ... . -- Ernesto Hern?ndez-Novich - Running Linux 2.4.19 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From lgallard at linuxmail.org Fri Mar 14 17:24:08 2003 From: lgallard at linuxmail.org (Luis M. Gallardo D.) Date: Wed Aug 4 23:59:35 2004 Subject: [P] Redireccionar salida de comandos Message-ID: <20030314232408.15889.qmail@linuxmail.org> Saludos amigos de la lista de Perl de Caracas. Estoy haciendo una aplicaci?n perl-cgi para administar las cuentas de usuarios y grupos en un servidor LDAP. Aunque mi idea es usar el m?dulo libnet-ldap-perl, por falta de tiempo decid? simplemente utilizar los comandos que vienen con ldap-utils (ldapsearch, ldapmodify, etc). Hacki? (me disculpan la tropicalizaci?n) el script ldapsync.pl, que en esencia sincroniza los passwords de Linux y de Samba, y tom? la forma como utilizan los comandos de ldap-utils: $FILE="|/usr/bin/ldapmodify -h $strLDAPHost -x -D '$strBindDn' -w $strBindPass"; open FILE or die; print FILE < colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Sun Mar 16 21:14:35 2003 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:35 2004 Subject: [P] Redireccionar salida de comandos In-Reply-To: <20030314232408.15889.qmail@linuxmail.org> Message-ID: On Fri, 14 Mar 2003, Luis M. Gallardo D. wrote: > Hacki? (me disculpan la tropicalizaci?n) el script ldapsync.pl, que en > esencia sincroniza los passwords de Linux y de Samba, y tom? la forma > como utilizan los comandos de ldap-utils: [...] > Despu?s de leer sobre la funcisn open(), entend? que el "|" que precede > al comando indica que se le va a pasar informaci?n a trav?s de un pipe. > Hasta aqu? todo ch?vere. > > El problema en si es que cuando se ejecuta dicho comando, ?ste imprime > los resultados de las modificaciones en el navegador :-( > > Quiz?s la forma de que no imprima los resultados en el navegador es > redireccionado la salida estandar, pero en Perl no he hallado la forma > de hacer esto. Lo que hice (y no me parece lo mas elegante) fue > redireccionar la salida estandar en el la invocaci?n del comando, es decir: > > $FILE="|/usr/bin/ldapmodify -h $strLDAPHost -x -D '$strBindDn' -w $strBindPass > /dev/null"; > > Si alguien puede decirme d?nde puedo buscar informaci?n para > redireccionar la salida estandar se lo agradecerma mucho. Para lo que quieres hacer, esa es la manera. Siempre puedes hacer un fork() y en el hijo cerrar el canal stderr antes de hacer el exec(), pero es demasiado trabajo para una tonter?a que el shell puede hacer por t?. Mejor trabaja con Net::LDAP, es mucho m?s limpio. -- Ernesto Hern?ndez-Novich - Running Linux 2.4.20 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it doesn't exist or isn't important. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From fobispo at nic.ve Mon Mar 17 07:22:21 2003 From: fobispo at nic.ve (Francisco Obispo) Date: Wed Aug 4 23:59:35 2004 Subject: [P] Redireccionar salida de comandos In-Reply-To: References: Message-ID: <3E75CC0D.5030004@nic.ve> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hola. Logicamente usar Net::LDAP es MUCHO mas limpio.. ahora para responder tu pregunta utiliza: open(ERRORLOG,">/dev/null"); *STDERR=*ERRORLOG; recuerda cerrar el filehandle al final del programa.. close(ERRORLOG); de esta forma todo lo que se genere al STDERR va a ser enviado a /dev/null.. Tambien puedes sustituir /dev/null con otro archivo (para efectos de hacer seguimiento) Salu2 Ernesto Hernandez-Novich wrote: |On Fri, 14 Mar 2003, Luis M. Gallardo D. wrote: | |>Hacki? (me disculpan la tropicalizaci?n) el script ldapsync.pl, que en |>esencia sincroniza los passwords de Linux y de Samba, y tom? la forma |>como utilizan los comandos de ldap-utils: | |[...] | |>Despu?s de leer sobre la funcisn open(), entend? que el "|" que precede |>al comando indica que se le va a pasar informaci?n a trav?s de un pipe. |>Hasta aqu? todo ch?vere. |> |>El problema en si es que cuando se ejecuta dicho comando, ?ste imprime |>los resultados de las modificaciones en el navegador :-( |> |>Quiz?s la forma de que no imprima los resultados en el navegador es |>redireccionado la salida estandar, pero en Perl no he hallado la forma |>de hacer esto. Lo que hice (y no me parece lo mas elegante) fue |>redireccionar la salida estandar en el la invocaci?n del comando, es decir: |> |>$FILE="|/usr/bin/ldapmodify -h $strLDAPHost -x -D '$strBindDn' -w $strBindPass > /dev/null"; |> |>Si alguien puede decirme d?nde puedo buscar informaci?n para |>redireccionar la salida estandar se lo agradecerma mucho. | | |Para lo que quieres hacer, esa es la manera. | |Siempre puedes hacer un fork() y en el hijo cerrar el canal stderr antes |de hacer el exec(), pero es demasiado trabajo para una tonter?a que el |shell puede hacer por t?. | |Mejor trabaja con Net::LDAP, es mucho m?s limpio. - -- __________________________________________________________________ Francisco Jose Obispo Semidey System Administrator ccTLD .VE Technical Contact - http://www.nic.ve CNTI - REACCIUN - http://www.cnti.ve Work: +58 212 709 5257 GPG Fingerprint: 23FE 02B7 2E9A 24DB 51F3 29CB 87CF 3C30 3236 D09D ___________________________________________________________________ MOTD: hubub, hubub, HUBUB, hubub, hubub, hubub, HUBUB, hubub, hubub, hubub. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQE+dcwMh888MDI20J0RAqZXAKDGgqj0tAIg7i+ACMco8EydUgK/kgCeLS7z JCGCZvGvj6kiR0KFJ5WrqEU= =iaUG -----END PGP SIGNATURE----- ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Mon Mar 17 07:38:43 2003 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:35 2004 Subject: [P] Redireccionar salida de comandos In-Reply-To: <3E75CC0D.5030004@nic.ve> Message-ID: On Mon, 17 Mar 2003, Francisco Obispo wrote: > ahora para responder tu pregunta utiliza: > > open(ERRORLOG,">/dev/null"); > *STDERR=*ERRORLOG; > > recuerda cerrar el filehandle al final del programa.. > > close(ERRORLOG); > > > de esta forma todo lo que se genere al STDERR va a ser enviado a /dev/null.. Esto no reconecta el STDERR a /dev/null, sino que altera el espacio de nombres para "simular" la reconexi?n, pero _solamente_ el del script Perl, En una reconexi?n "verdadera" ocurrir?a la siguiente secuencia de llamadas al sistema close(2) ; Cierra 2, correspondiente al stderr open(/dev/null) ; Abre /dev/null en el _primer_ descriptor libre, que ; es 2 en virtud de haber sido cerrado inmediatamente ; antes y en consecuencia, /dev/null se convierte en ; el nuevo stderr. Esto es exactamente lo mismo que ; pasa cuando uno hace 2> /dev/null en el shell. y ser?a "heredado" por los procesos hijos. El m?todo que propone Francisco no cierra el descriptor 2, sino que abre uno nuevo con el open y luego hace una alteraci?n en la tabla de s?mbolos de Perl, de manera que el _s?mbolo_ STDERR apunte a la misma informaci?n que el s?mbolo _ERRORLOG_; el efecto en el programa Perl es que la salida va a parar a otra parte diferente al STDERR tradicional, pero por un "alias" en la tabla de s?mbolos y no por una redirecci?n formal como se acostumbra en Unix. Por eso es que ese m?todo no "reconecta" el STDERR de procesos hijo invocados v?a system/open. Puedes verificarlo con $ perl open E, ">/dev/null"; *STDERR = *E; open F,"| ls estosisale"; # Suponiendo que el archivo 'estosisale' no existe print STDERR "Esto no sale"; close E; close F; ^D ls: estosisale: No such file or directory Que es lo que Luis quiere que no pase. Tiene que usar la redirecci?n del shell o bien hacer su par fork/exec manualmente. -- Ernesto Hern?ndez-Novich - Running Linux 2.4.19 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From fobispo at nic.ve Mon Mar 17 08:02:27 2003 From: fobispo at nic.ve (Francisco Obispo) Date: Wed Aug 4 23:59:35 2004 Subject: [P] Redireccionar salida de comandos In-Reply-To: References: Message-ID: <3E75D573.8020003@nic.ve> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Cierto.. De hecho es mucho mas pr?ctico.. no estaba tomando en cuenta lo del subproceso,... :-S Saludos Ernesto Hernandez-Novich wrote: |On Mon, 17 Mar 2003, Francisco Obispo wrote: | |>ahora para responder tu pregunta utiliza: |> |>open(ERRORLOG,">/dev/null"); |>*STDERR=*ERRORLOG; |> |>recuerda cerrar el filehandle al final del programa.. |> |>close(ERRORLOG); |> |> |>de esta forma todo lo que se genere al STDERR va a ser enviado a /dev/null.. | | |Esto no reconecta el STDERR a /dev/null, sino que altera el espacio de |nombres para "simular" la reconexi?n, pero _solamente_ el del script Perl, |En una reconexi?n "verdadera" ocurrir?a la siguiente secuencia de |llamadas al sistema | |close(2) ; Cierra 2, correspondiente al stderr |open(/dev/null) ; Abre /dev/null en el _primer_ descriptor libre, que | ; es 2 en virtud de haber sido cerrado inmediatamente | ; antes y en consecuencia, /dev/null se convierte en | ; el nuevo stderr. Esto es exactamente lo mismo que | ; pasa cuando uno hace 2> /dev/null en el shell. | |y ser?a "heredado" por los procesos hijos. El m?todo que propone |Francisco no cierra el descriptor 2, sino que abre uno nuevo con el open |y luego hace una alteraci?n en la tabla de s?mbolos de Perl, de manera |que el _s?mbolo_ STDERR apunte a la misma informaci?n que el s?mbolo |_ERRORLOG_; el efecto en el programa Perl es que la salida va a parar a |otra parte diferente al STDERR tradicional, pero por un "alias" en la |tabla de s?mbolos y no por una redirecci?n formal como se acostumbra en |Unix. | |Por eso es que ese m?todo no "reconecta" el STDERR de procesos hijo |invocados v?a system/open. Puedes verificarlo con | |$ perl |open E, ">/dev/null"; |*STDERR = *E; |open F,"| ls estosisale"; # Suponiendo que el archivo 'estosisale' no existe |print STDERR "Esto no sale"; |close E; |close F; |^D |ls: estosisale: No such file or directory | |Que es lo que Luis quiere que no pase. Tiene que usar la redirecci?n del |shell o bien hacer su par fork/exec manualmente. - -- __________________________________________________________________ Francisco Jose Obispo Semidey System Administrator ccTLD .VE Technical Contact - http://www.nic.ve CNTI - REACCIUN - http://www.cnti.ve Work: +58 212 709 5257 GPG Fingerprint: 23FE 02B7 2E9A 24DB 51F3 29CB 87CF 3C30 3236 D09D ___________________________________________________________________ MOTD: hubub, hubub, HUBUB, hubub, hubub, hubub, HUBUB, hubub, hubub, hubub. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQE+ddVyh888MDI20J0RAsauAJ9IOeuhF0ffuqP7qFqHNkvy59TgCQCfQ7Fm tF6el7o/kF1KABKLCHBEn5I= =c3Cq -----END PGP SIGNATURE----- ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From lgallard at linuxmail.org Tue Mar 18 14:12:09 2003 From: lgallard at linuxmail.org (Luis M. Gallardo D.) Date: Wed Aug 4 23:59:35 2004 Subject: [P] Redireccionar salida de comandos Message-ID: <20030318201209.3782.qmail@linuxmail.org> Gracias Ernesto y Francisco. Muy ilustrativo tu ejemplo, Ernesto. Como necesitaba tener lista la aplicación use ldap-utils, pero dentro de mis planes está usar Net::LDAP, para hacerlo independiente de la plataforma (por eso no me pareció elegante usar > /dev/null). Ahora que está funcionando para lo que lo pensé (administración de cuentas Linux/Samba) me voy a poner a estudiar la forma de usar el módulo de perl-LDAP, y luego publicarlo bajo GPL ;-) Gracias nuevamente, Luis Gallardo. -- ______________________________________________ http://www.linuxmail.org/ Now with e-mail forwarding for only US$5.95/yr Powered by Outblaze ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Tue Mar 18 15:42:35 2003 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:35 2004 Subject: CGI para cambiar claves con Net::LDAP In-Reply-To: <20030318201209.3782.qmail@linuxmail.org> Message-ID: On Tue, 18 Mar 2003, Luis M. Gallardo D. wrote: > Ahora que esta funcionando para lo que lo pensi > (administracisn de cuentas Linux/Samba) me voy a poner > a estudiar la forma de usar el msdulo de perl-LDAP, y > luego publicarlo bajo GPL ;-) Escrib? esto ?sta tarde. Por lo menos funciona y es estricto con la selecci?n de claves para que el usuario no ponga sandeces. #!/usr/bin/perl -w # # Requisitos: # # NET::LDAP # Crypt::Cracklib # Digest::SHA1 # # apt-get install libnet-ldap-perl libcrypt-cracklib-perl libdigest-sha1-perl use constant; use CGI; use Net::LDAP; use Crypt::Cracklib; use Digest::SHA1; $|++; my $ldapserver = "ldap.nuevomundo.seg"; my $basedn = "dc=nuevomundo,dc=com,dc=ve"; my %translation = ( "it is based on your username" => "esta basada en su nombre de usuario", "it is based upon your password entry" => "esta basada en su nombre completo", "it is derived from your password entry" => "es derivada de su nombre completo", "it's derived from your password entry" => "es derivada de su descripcion de usuario", "it is derivable from your password entry" => "puede deducirse de su descripcion de usuario", "it's derivable from your password entry" => "puede deducirse de su descripcion de usuario", "it's WAY too short" => "es demasiado corta", "it is too short" => "es muy corta", "it does not contain enough DIFFERENT characters" => "no contiene suficientes caracteres diferentes", "it is all whitespace" => "esta compuesta por espacios en blanco", "it is too simplistic/systematic" => "es demasiado simple o sistematica", "it looks like a National Insurance number" => "parece un numero de cedula", "it is based on a dictionary word" => "esta basada en una palabra del diccionario", "it is based on a (reversed) dictionary word" => "esta basada en invertir una palabra del diccionario", "ok" => "ok", ); sub checkquality { my $p = shift; return("no tiene letras y numeros al mismo tiempo") unless $p =~ m/\w/ && $p =~ m/\d/; my $reason = fascist_check($p,"/var/cache/cracklib/cracklib_dict"); return($translation{$reason}); } sub showpage { my $q = shift; my $login = shift; my $error = shift; print $q->header, $q->start_html( -title => 'Cambiar clave', -author => 'Ernesto Hernandez-Novich' ), "\n", $q->h1('Cambiar clave'), "\n", "Bla bla - password dificil - consejos...\n", $q->startform(), "\n", $q->start_table, "\n", $q->Tr, "\n", $q->td( { -align => 'right' }, "Usuario:" ), "\n", $q->td( { -align => 'left' }, $q->textfield( -name => 'login', -default => $login, -size => 8, -maxlength => 8) ), "\n", $q->end_Tr, "\n", $q->Tr, "\n", $q->td( { -align => 'right' }, "Clave actual:" ), "\n", $q->td( { -align => 'left' }, $q->password_field( -name => 'oldpass', -size => 20, -maxlength => 20) ), "\n", $q->end_Tr, "\n", $q->Tr, "\n", $q->td( { -align => 'right' }, "Nueva Clave:" ), "\n", $q->td( { -align => 'left' }, $q->password_field( -name => 'newpass1', -size => 20, -maxlength => 20) ), "\n", $q->end_Tr, "\n", $q->Tr, "\n", $q->td( { -align => 'right' }, "Repita la Nueva Clave" ), "\n", $q->td( { -align => 'left' }, $q->password_field( -name => 'newpass2', -size => 20, -maxlength => 20) ), "\n", $q->end_Tr, "\n", $q->Tr, "\n", $q->td( { -colspan => '2', -align => 'center' }, $q->submit( -value => 'Cambiar') ), "\n", $q->end_Tr, "\n", $q->end_table, "\n", $q->endform, "\n", $q->end_table, "\n", $q->p; if (defined($error)) { print $error, $q->p; } print $q->end_html; } # Rutinas para interactuar con LDAP sub checkandchange { my $uid = shift; my $oldpass = shift; my $newpass = shift; my $ldap = Net::LDAP->new($ldapserver); my $binddn = "uid=$uid,ou=People,$basedn"; if ($ldap) { if ($ldap->bind) { if ($ldap->search(base => $basedn, filter => "(uid=$uid)")->count) { $ldap->unbind; $ldap = Net::LDAP->new($ldapserver); if ($ldap->bind($binddn, password => $oldpass)->code) { $ldap->unbind; return 2; } else { my $h = Digest::SHA1->new; my $p = "{SHA}"; $h->add($newpass); $p .= $h->b64digest . "="; if ($ldap->modify($binddn, replace => { 'userPassword' => $p } )->code) { $ldap->unbind; return 3; } else {; $ldap->unbind; return 0; } } return (1,undef); } else { $ldap->unbind; return 1; } } else { return 5; } } else { return 4; } } # Rutinas para reaccionar ante los posibles errores. sub nologin { my $q = shift; showpage($q,undef,'¡No indicó su nombre de usuario!'); exit(0); } sub nooldpass { my $q = shift; showpage($q,undef,'¡No indicó su clave actual!'); exit(0); } sub nonewpass { my $q = shift; showpage($q,undef,'¡No indicó la clave nueva dos veces!'); exit(0); } sub newnomatch { my $q = shift; showpage($q,undef,'¡Las claves nuevas no coinciden!'); exit(0); } sub weakpass { my $q = shift; my $r = shift; showpage($q,undef,"La nueva clave ha sido rechazada porque $r."); exit(0); } my $q = new CGI; if ($q->param) { my ($login,$oldpass,$newpass1,$newpass2) = map { $q->param($_) } ( 'login', 'oldpass', 'newpass1', 'newpass2' ); # Verificamos que no falte nada nologin($q) unless $login; nooldpass($q) unless $oldpass; nonewpass($q) unless ($newpass1 && $newpass2); newnomatch($q) unless ($newpass1 eq $newpass2); # Verificamos que la nueva clave cumpla con los standards de calidad # de organismos pluricelulares. my $reason = checkquality($newpass1); weakpass($q,$reason) unless $reason eq 'ok'; # Verificamos que el usuario exista, su clave actual sea correcta # y procedemos con el cambio. my $result = ""; for (checkandchange($login,$oldpass,$newpass1)) { /^0$/ and do { $result = "La clave de $login fue cambiada exitosamente."; last; }; /^1$/ and do { $result = "El usuario $login no existe"; last; }; /^2$/ and do { $result = "La clave actual es incorrecta"; last; }; /^3$/ and do { $result = "No se pudo cambiar la clave"; last; }; /^4$/ and do { $result = "No puedo conectarme a $ldapserver"; last; }; /^5$/ and do { $result = "No puedo conectarme anonimamente a $ldapserver"; last; }; } showpage($q,$login,$result); } else { showpage($q,undef,"Por favor complete los datos"); } -- Ernesto Hern?ndez-Novich - Running Linux 2.4.19 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From lgallard at linuxmail.org Wed Mar 19 12:51:51 2003 From: lgallard at linuxmail.org (Luis M. Gallardo D.) Date: Wed Aug 4 23:59:35 2004 Subject: CGI para cambiar claves con Net::LDAP Message-ID: <20030319185151.14045.qmail@linuxmail.org> Gracias Ernesto. Con lo que enviaste ya tengo ejemplos de sobra de Net::LDAP ;-) ----- Original Message ----- From: Ernesto Hernandez-Novich Date: Tue, 18 Mar 2003 17:42:35 -0400 (VET) To: Subject: CGI para cambiar claves con Net::LDAP > On Tue, 18 Mar 2003, Luis M. Gallardo D. wrote: > > Ahora que esta funcionando para lo que lo pensi > > (administracisn de cuentas Linux/Samba) me voy a poner > > a estudiar la forma de usar el msdulo de perl-LDAP, y > > luego publicarlo bajo GPL ;-) > > Escrib? esto ?sta tarde. Por lo menos funciona y es estricto con la > selecci?n de claves para que el usuario no ponga sandeces. Luis M. Gallardo D. Linux User #130502 Caracas - Venezuela -- ______________________________________________ http://www.linuxmail.org/ Now with e-mail forwarding for only US$5.95/yr Powered by Outblaze ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------