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:<br><br>

./<a href="http://script.pl">script.pl</a> [fichero_configuracion] [dominio]<br><br>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. <br>

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. <br>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.<br>

<br>Y es que ya no se ni que mirar, no entiendo que me puede estar pasando, si el codigo está bien!<br>¿Alguien me puede echar una mano?No sé , ¿Estoy haciendo algo mal?<br><br>Gracias, saludos!<br><br>#!c:\perl\bin\perl.exe -w<br>

<br>use 5.010;<br>use Net::LDAP;<br>use Net::LDAP::Control;<br>use Net::LDAP::Control::Paged;<br>use MIME::Base64;<br>use open qw(:utf8 :std); <br><br>my $siguiente = '0';<br>my $ldaps = "$ARGV[1]";<br>
my $configuracion = "$ARGV[0]";<br>
open CONFIG, q[<], "$configuracion" or die "No puedo leer el fichero de configuracion $!";<br>open REPORTE, q[>], "reporteee.txt" or die "No puedo escribir el fichero $ARGV[1].txt $!";<br>

my $base = 'DC=espana5,DC=bankia,DC=corp';<br><br>sub conviertefecha{<br>    my $fecha_desordenada = shift;<br>    my @empieza = qw(0 4 6 8 10 12);<br>    foreach my $comienzo(@empieza){ <br>        if ($cont == '1'){<br>

            $despiezando = substr($fecha_desordenada,$comienzo,4);<br>            push(@array,$despiezando);<br>            ++$cont;next;<br>        }<br>        $despiezando = substr($fecha_desordenada,$comienzo,2);<br>
        $cont++;<br>
        push(@array,$despiezando);<br>    }<br>    $fecha_ordenada = "$f[2]/$f[1]/$f[0] $f[3]:$f[4]:$f[5]";<br>    return $fecha_ordenada;<br>    undef @array; <br>}<br>sub busca{<br>    my ($us,$pass) = @_;<br>

    my $query = "cn=x0*";<br>    say "$query";<br>    my @attrs = qw(cn sAMAccountName memberof department);<br>    say "defini arr";<br>    my @args = ( base => $base,<br>                 #scope => 'sub',<br>

                 filter => $query,<br>                 attrs => \@attrs,<br>                 control => [ $page ],<br>                ); <br>    my $ldap = Net::LDAP->new($ldaps) or die "$!";<br>    say "Conectando a $ldaps";<br>

    my $mesg = $ldap->bind($us, password =>$pass);<br>    my $page = Net::LDAP::Control::Paged->new( size => 5000 ) or die "$!";<br>    my $cookie; <br>    say "$base-----$query------$page------$ldaps----$us----$pass--";<br>

    while(1){<br>    say "Entre en while1";<br>        $mesg = $ldap->search ( @args ) or die $!;<br>       <b> while(my $entry = $mesg->shift_entry()){</b> ## Aqui no entra<br>        say "Entre en while";<br>

            my $lastLogonTimestamp = $entry->get_value('lastLogonTimestamp');<br>            $lastLogonTimestamp = &conviertefecha($lastLogonTimestamp);<br>            my $msdsuaccountctrl = $entry->get_value('msds-user-account-control-computed');<br>

            my $departmento = $entry->get_value('department');<br>            say REPORTE "$lastLogonTimestamp,$msdsuaccountctrl,$departmento";<br>        } <br>        my ($resp) = $mesg->control(LDAP_CONTROL_PAGED) or last;<br>

        $cookie = $resp->cookie or last;<br>        $page->cookie($cookie);<br>    }      <br>    if ($cookie){<br>        $page->cookie($cookie);<br>        $page->size(0);<br>        $ldap->search( @args );<br>

    }<br>    $ldap->unbind;<br>}<br>unless ( @ARGV eq '2' ){<br>    say "[SYNTAX ERROR]\n[INFO] ./$0 [fichero_configuracion] [dominio]";<br>    exit(1);<br>}<br>while(my $linea=<CONFIG>){<br>    chomp($linea);<br>

    if($siguiente eq '1'){<br>        $passwd = $linea;<br>        &busca($user,$passwd);<br>        exit(0);<br>    }<br>    $user = $linea;<br>    $siguiente = '1';<br>}<br>