En la linea previa a esa en la que no entras, hay una llamada a
$ldap->search. Yo volcaría los argumentos de esa llamada para asegurarme
de que realmente la llamada a $ldap->search devuelve algo. Quiza no
entras porque la busqueda no devuelve resultados.
También te recomiendo que uses strict al principio del script, me ha
parecido ver alguna variable no inicializada por ahi...
Slds
J.
El 20/09/11 12:43, David Barrientos J escribió:
Hola! Os escribo para ver si alguien me puede echar una mano: Necesito
hacer un script que descargue de forma masiva ciertos datos de todos
los usuarios de un directorio activo de microsoft. Mi script se
ejecuta asi:
./script.pl <http://script.pl> [fichero_configuracion] [dominio]
Primero, lee del fichero de configuracion sus dos lineas: Usuario, y
contraseña. Despues es donde viene el problema. En la parte de la
autenticación ( la linea que pongo en negrita ) no entra en el bucle,
no consulta ningun dato.
Esto es muy raro, el código de la función busca() , si lo pego en otro
script nuevo, sin funciones, y con la password y usuario en el
fichero, funciona todo perfecto. Tal y como esta.
Pero, al leer usuario y pass de un fichero y usar funciones, falla en
la consulta. Y he comprobado haciendo un print las variables usuario,
password, ldaps,que todos los valores los toma bien.
Y es que ya no se ni que mirar, no entiendo que me puede estar
pasando, si el codigo está bien!
¿Alguien me puede echar una mano?No sé , ¿Estoy haciendo algo mal?
Gracias, saludos!
#!c:\perl\bin\perl.exe -w
use 5.010;
use Net::LDAP;
use Net::LDAP::Control;
use Net::LDAP::Control::Paged;
use MIME::Base64;
use open qw(:utf8 :std);
my $siguiente = '0';
my $ldaps = "$ARGV[1]";
my $configuracion = "$ARGV[0]";
open CONFIG, q[<], "$configuracion" or die "No puedo leer el fichero
de configuracion $!";
open REPORTE, q[>], "reporteee.txt" or die "No puedo escribir el
fichero $ARGV[1].txt $!";
my $base = 'DC=espana5,DC=bankia,DC=corp';
sub conviertefecha{
my $fecha_desordenada = shift;
my @empieza = qw(0 4 6 8 10 12);
foreach my $comienzo(@empieza){
if ($cont == '1'){
$despiezando = substr($fecha_desordenada,$comienzo,4);
push(@array,$despiezando);
++$cont;next;
}
$despiezando = substr($fecha_desordenada,$comienzo,2);
$cont++;
push(@array,$despiezando);
}
$fecha_ordenada = "$f[2]/$f[1]/$f[0] $f[3]:$f[4]:$f[5]";
return $fecha_ordenada;
undef @array;
}
sub busca{
my ($us,$pass) = @_;
my $query = "cn=x0*";
say "$query";
my @attrs = qw(cn sAMAccountName memberof department);
say "defini arr";
my @args = ( base => $base,
#scope => 'sub',
filter => $query,
attrs => \@attrs,
control => [ $page ],
);
my $ldap = Net::LDAP->new($ldaps) or die "$!";
say "Conectando a $ldaps";
my $mesg = $ldap->bind($us, password =>$pass);
my $page = Net::LDAP::Control::Paged->new( size => 5000 ) or die "$!";
my $cookie;
say "$base-----$query------$page------$ldaps----$us----$pass--";
while(1){
say "Entre en while1";
$mesg = $ldap->search ( @args ) or die $!;
*while(my $entry = $mesg->shift_entry()){* ## Aqui no entra
say "Entre en while";
my $lastLogonTimestamp =
$entry->get_value('lastLogonTimestamp');
$lastLogonTimestamp = &conviertefecha($lastLogonTimestamp);
my $msdsuaccountctrl =
$entry->get_value('msds-user-account-control-computed');
my $departmento = $entry->get_value('department');
say REPORTE
"$lastLogonTimestamp,$msdsuaccountctrl,$departmento";
}
my ($resp) = $mesg->control(LDAP_CONTROL_PAGED) or last;
$cookie = $resp->cookie or last;
$page->cookie($cookie);
}
if ($cookie){
$page->cookie($cookie);
$page->size(0);
$ldap->search( @args );
}
$ldap->unbind;
}
unless ( @ARGV eq '2' ){
say "[SYNTAX ERROR]\n[INFO] ./$0 [fichero_configuracion] [dominio]";
exit(1);
}
while(my $linea=<CONFIG>){
chomp($linea);
if($siguiente eq '1'){
$passwd = $linea;
&busca($user,$passwd);
exit(0);
}
$user = $linea;
$siguiente = '1';
}
_______________________________________________
Madrid-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/madrid-pm
_______________________________________________
Madrid-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/madrid-pm