<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    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.<br>
    <br>
    También te recomiendo que uses strict al principio del script, me ha
    parecido ver alguna variable no inicializada por ahi...<br>
    <br>
    Slds<br>
    J.<br>
    <br>
    El 20/09/11 12:43, David Barrientos J escribió:
    <blockquote
cite="mid:CADC4WV70DHVrY70J=ABfvp4+oeM=cmdS1nLJFsO9g8Lw1hYf2w@mail.gmail.com"
      type="cite">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 moz-do-not-send="true" 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>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Madrid-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Madrid-pm@pm.org">Madrid-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/madrid-pm">http://mail.pm.org/mailman/listinfo/madrid-pm</a></pre>
    </blockquote>
  </body>
</html>