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