• Publicidad

Consulta sobre XML

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Notapor situ » 2008-06-12 18:14 @801

Creo que no me expliqué bien.
Voy a ver si lo explico por pasos se entiende.
1. Creo un nuevo Host con datos.
Código: Seleccionar todo
host : marcos10
url: http://marcos10
ip: 1.1.1.1
nota: test
usuario: admin password: test
usuario: root password: situ

Ahora al hacer esto tengo 2 usuarios asignados a ese Host, cuando quiero ver el password del usuario "root" hago el siguiente procedimiento.
2. ./kk.pl -name=marcos10 -usuario=root -descrypt

Ahora esta operatoria anda pero el resultado que me da es:

Código: Seleccionar todo
marcos10 => http://marcos10 (1.1.1.1)
admin : situ


Digamos me da bien el password "situ" ya que corresponde al usuario root, pero me dice como usuario "admin" que no es correcto ya que sería "root".
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Publicidad

Notapor explorer » 2008-06-12 18:58 @832

Sí, ya veo el error. Está en el bucle de la condición donde buscas por nombre de host, de usuario y su contraseña. Debería ser así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( $name and $usuario and $descrypt ) {
    print "- Ingresar password de la key gpg\n";
    system("gpg --no-options $name.$usuario.pw.asc");

    open my $FILE, '<', "$name.$usuario.pw" or die $!;
    my $lines = <$FILE>;
    close $FILE;

    for my $pc ( @{$info->{technology}{pc}} ) {
        next if $pc->{name} !~ /^$name$/;

        print "$pc->{name} => $pc->{url} ($pc->{ip})\n";

        for my $user ( @{$pc->{user}} ) {
            next if $user->{name} !~ /^$usuario$/;

            print "\t   $user->{name} : $lines\n";

            system("rm -f $name.$usuario.pw");
            exit ();
        }
    }
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
La condición de exclusión por nombre del $usuario estaba mal colocada. Debía ser colocada dentro del bucle que analiza los nombres de los usuarios.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor situ » 2008-06-12 19:11 @841

Muchas Gracias
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Notapor situ » 2008-06-12 19:17 @845

Perdón que sea tan "rompe" pero la verdad que aprendo muchísimo del foro :D.
¿Hay forma de que no me aparezca 2 veces el host?
ya que el resultado ahora es:

Código: Seleccionar todo
marcos10 => http://marcos10 (1.1.1.1)
marcos10 => http://marcos10 (1.1.1.1)
           root : garcia


Gracias.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Notapor explorer » 2008-06-13 02:56 @164

Eso es algo más difícil.

Tendrías que hacer un cambio fundamental: el bucle interior de los usuarios consistiría en guardar en un array los usuarios encontrados que coincidiesen con el que buscamos. Luego, ver si ese array contiene algo, indicando que hemos encontrado al menos a un usuario. Si es así, pintamos la línea del host, la lista de usuarios a partir del array (solo el primero sería suficiente), y luego hacemos el system() y el exit().
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor situ » 2008-06-13 18:11 @799

Discúlpame, pero la verdad que no puedo hacerlo, sé que siempre digo lo mismo pero es la verdad.

Tengo esta función.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
elsif ( $n and $u) {

    for my $pc ( @{$info->{technology}{pc}} ) {
        next if $pc->{name} !~ /^$n$/;

        print "$pc->{name} => $pc->{url} ($pc->{ip})\n";

        for my $user ( @{$pc->{user}} ) {
            next if $user->{name} !~ /^$u$/;
            print "\t   $user->{name} : $user->{password}\n";
            exit ();
        }
    }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora puedo buscar por nombre y usuario, igualmente me entrega lo mismo que antes.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Notapor explorer » 2008-06-13 21:12 @925

Ya, pero las respuestas que encontrarás aquí son las correspondientes al foro Intermedio... quizás deberías haberlas puesto en el de Básico.

Tú repasa mi última contestación y tradúcela línea a línea a Perl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor situ » 2008-06-14 16:49 @742

Si tenes razón, voy a practicar un poco más :D
Saludos.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Notapor situ » 2008-06-19 17:46 @782

Consulta,
¿Cómo puedo simplificar la función de "desencriptar"?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
## Desencripto la password
if ( $n and $u and $d ) {
    for my $pc ( @{$info->{technology}{pc}} ) {
        next if $pc->{name} !~ /^$n$/;
        for my $user ( @{$pc->{user}} ) {
            next if $user->{name} !~ /^$u$/;
            open  (my $PWD , "> $n.$u.pw.asc");
            print $PWD "$user->{password}\n";
            close ($PWD);
            print "- Ingresar password de la key gpg\n";
            system("gpg --no-options $n.$u.pw.asc");
            open my $FILE, '<', "$n.$u.pw" or die $!;
            my $lines = <$FILE>;
            close $FILE;
            for my $pc ( @{$info->{technology}{pc}} ) {
                next if $pc->{name} !~ /^$n$/;
                print "$pc->{name} => $pc->{url} ($pc->{ip})\n";
                for my $user ( @{$pc->{user}} ) {
                    next if $user->{name} !~ /^$u$/;
                    print "\t   $user->{name} : $lines\n";
                    system("rm -f $n.$u.pw");
                    exit ();
                }
            }
        }
    }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo que hace es buscar el host por nombre y usuario, luego guarda el contenido del password en un archivo para luego desencriptarlo.
Saludos.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Notapor explorer » 2008-06-21 10:24 @475

¿Por qué existe dos veces el bucle for my $pc()?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

AnteriorSiguiente

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 30 invitados

cron