Página 4 de 6

NotaPublicado: 2008-06-10 18:23 @807
por explorer
Un bucle while mientras el usuario no indique que no quiere seguir metiendo más datos...

NotaPublicado: 2008-06-11 15:41 @695
por situ
Explorer,
Sé que me vas a odiar pero no sé en qué estoy fallando pero no logro el while :s

NotaPublicado: 2008-06-11 17:27 @769
por explorer
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while ( 'el usuario no entre un FIN' ) {
    print "Nombre del host (FIN para terminar):";
    chomp(my $host = <>);
    last if $host eq 'FIN';
    # el resto de la entrada
    # actualizar xml
}
# grabar xml
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2008-06-11 19:31 @855
por situ
Gracias.
Ahora tengo otro problemita.
Al crear cada usuario también se crea el archivo con su password, pero al hacer lo siguiente:
[~][situ]# ./kk.pl -name=marcos -usuario=root -descrypt

Me muestra el password del usuario "root" como yo le pedí pero como usuario "admin", en vez de admin :s

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -s
#use strict;
#use warnings;
use POSIX qw(strftime);
my $hday= strftime("%Y%m%d", localtime);

##Verificacion del modulo XML::Simple
BEGIN {
    eval "use XML::Simple";
    if ( $@ ) {
        warn  "Error al cargar el modulo: XML::Simple\n"
            . "Instalar Modulo:\n"
            . "\t\tcpan XML::Simple\n\n";
        exit();
    }
}

our $crear;
our $name;
our $notes;
our $ip;
our $url;
our $descrypt;
our $usuario;

## Ayuda del sistema
if ( !$name and !$notes and !$ip and !$url and !$crear and !$descrypt and !$usuario) {
    die "Uso: $0 [-name|-notes|-ip|-url|-crear|-descrypt]\n"
      . "\t-name=pc                                                              Busqueda por nombre del host\n"
      . "\t-notes=test                                                       Busqueda por nota\n"
      . "\t-ip=1.1.1.1                                                           Busqueda por direccion IP\n"
      . "\t-url=https://10.0.0.1                                         Busqueda por url\n"
      . "\t-crear                                            Adjuntar nuevos contenidos\n"
      . "\t-name=pc -usuario=admin -descrypt                Desencriptar password\n"
      ;
}

my $info = XMLin('kk.xml', KeyAttr => 1, ForceArray => [ 'user' ]);

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>;
            for my $pc ( @{$info->{technology}{pc}} ) {
        next if $name  and $pc->{name}  !~ /^$name$/  and $user->{name} !~ /^$usuario$/;
        print "$pc->{name} => $pc->{url} ($pc->{ip})\n";
    for my $user ( @{$pc->{user}} ) {
        print "\t   $user->{name} : @lines\n";
        system("rm -f $name.$usuario.pw");
                close $FILE;
                exit ();
        }
    }


}

if ( !$crear ) {
    for my $pc ( @{$info->{technology}{pc}} ) {
        next if $name  and $pc->{name}  !~ /^$name$/;
        next if $notes and $pc->{notes} !~ /^$notes$/;
        next if $ip    and $pc->{ip}    !~ /^$ip$/;
        next if $url   and $pc->{url}   !~ /^$url$/;
        print "$pc->{name} => $pc->{url} ($pc->{ip})\n";
        for my $user ( @{$pc->{user}} ) {
            print "\t   $user->{name} : $user->{password}\n";
        }
    }
}

else {
 print "- Ingresar nombre del Host: ";
    my $hname=<STDIN>;
    chop($hname);
    print "- Ingresar url: ";
    my $hurl=<STDIN>;
    chop($hurl);
    print "- Ingresar IP: ";
    my $hip=<STDIN>;
    chop($hip);
    print "- Ingresar notas: ";
    my $hnota=<STDIN>;
    chop($hnota);    
  while ( 'el usuario no entre un FIN' ) {
    print "- Nombre de usuario (FIN para terminar):";
    chomp(my $huser = <>);
    last if $huser eq 'FIN';
## Creacion del archivo del password y la encriptacion
    open  (my $NHOST , "> $hname.$huser.pw");
    print "- Ingresar password (el password no aparece): ";
    system "stty -echo";
    my $hpass=<STDIN>;
    chop($hpass);
    print $NHOST "$hpass";
    close ($NHOST);
    system "stty echo";
        print "\n- Ingresar password de la key gpg\n";
        system("gpg -ac --no-options $hname.$huser.pw");
        system("rm -f $hname.$huser.pw");
##Termina  el archivo del password y la encriptacion

   push @{$info->{technology}{pc}}, {
        name    => $hname,
        url     => $hurl,
        ip      => $hip,
        user    => [{
                        name    => $huser,
                        password=> "$hname.$huser.pw.asc",
                        date    => $hday,
                    }],
        notes   => $hnota,
    };
        }
#use Data::Dumper;
#print Dumper $info;
#Escribo sobre el archivo xml la salida
open  my $SV, q{>:encoding(iso-8859-1)}, 'kk.xml';
print $SV XMLout($info, RootName => 'owner', XMLDecl => 1, NoAttr => 1 );
close ($SV)
}
 
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Gracias :D

NotaPublicado: 2008-06-12 13:14 @593
por situ
¿Alguno se le ocurre como poder resolverlo :D ?

NotaPublicado: 2008-06-12 15:33 @690
por explorer
Yo no entiendo la pregunta...

NotaPublicado: 2008-06-12 15:42 @695
por situ
Antes que nada gracias explorer por responder.
El problema es el siguiente:
Ahora para desencriptar el password, utilizo aparte del nombre del host el usuario, ya que ahora puedo agregar varios usuarios a la lista del HOST, con esto tengo:
./kk.pl -name=marcos -usuario=root -descrypt

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

marcos => http://hola.com (1.1.1.1)
admin : situ

El password es el correcto es el del usuario "root", pero me muestra como usuario "admin", ese es el "problema".
Gracias

NotaPublicado: 2008-06-12 16:30 @729
por explorer
No es cosa del programa. Ese "admin" está dentro del XML.

NotaPublicado: 2008-06-12 17:50 @784
por situ
Claro exacto, es el primero usuario que cargue para ese Host, pero no sé cómo hacer para que me muestre como usuario "root" ya que me da bien su password pero me dice "admin".

NotaPublicado: 2008-06-12 18:01 @792
por explorer
Abre el fichero XML con un editor de textos y busca por la palabra "admin", y la cambias.