• Publicidad

Consulta sobre MD5 y Find

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

Consulta sobre MD5 y Find

Notapor situ » 2007-11-06 11:38 @526

Buenas. en este caso les molesto porque quiero unir dos scripts y el resultado que obtengo no es satisfactorio.

Mi idea es mediante el módulo Find y Md5, listar todos los archivos de un directorio y obtener el HASH de cada uno.

Tengo los dos scripts por separado pero al querer unirlos no me andan :S

Find:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
## Lista los archivos con su PATH completo
use strict;
use File::Find;

my $dir = '/home/operador/scripts/perl';

find(\&imprimir_archivo, $dir);

sub imprimir_archivo{
my $elemento = $_;
print "$File::Find::name\n" if -f $elemento;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Md5:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use Digest::MD5;
my $file = shift || "/etc/passwd";
open(FILE, $file) or die "no se encuentra el archivo '$file': $!";
binmode(FILE);

print Digest::MD5->new->addfile(*FILE)->hexdigest, " $file\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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

Publicidad

Notapor explorer » 2007-11-06 12:23 @558

¿Cómo ejecutas los dos?
¿Qué error sale? ¿O no sale nada?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor situ » 2007-11-06 12:25 @559

Mi idea es armar un script el cual me lea un directorio y que obtenga el HASH MD5 de los archivos del directorio.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Notapor explorer » 2007-11-06 13:31 @605

Hombre, lo ideal es meterlo todo junto, pero una solución rápida sería (no probado):

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
programa1.pl | xargs programa2.pl
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor situ » 2007-11-06 14:09 @631

Voy a probarlo, gracias.

Te hago otra consulta. Tengo el siguiente script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use Digest::MD5;

my $file = $ARGV;
my $file= shift;
    open(FILE, $file) or die "no se encuentra el archivo '$file': $!";
    binmode(FILE);

    print Digest::MD5->new->addfile(*FILE)->hexdigest, " $file\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si uso:
Código: Seleccionar todo
root@tux2:/tmp# perl md5.pl /etc/passwd
b5066f11ad12b18949eec843634ae9fe /etc/passwd


Anda. Ahora si hago:
Código: Seleccionar todo
root@tux2:/tmp# perl md5.pl
no se encuentra el archivo '': No existe el fichero ó directorio at md3.pl line 6.


Obtengo el error. Mi consulta es: ¿cómo puedo hacer que mediante un if compruebe si ingreso el argumento?

Estaba pensando:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( $#ARGV <1 ) {
print "\nUso: perl $0 archivo\n\n";
print "   archivo: /etc/passwd por ejemplo\n";

exit();
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Intenté implementarlo pero siempre me muestra la ayuda aunque ingrese un argumento.

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

Notapor explorer » 2007-11-06 15:05 @670

A ver con esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( not @ARGV ) {
    print "\nUso: perl $0 archivo\n\n";
    print "   archivo: /etc/passwd por ejemplo\n";
    exit();
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Se lee: "Si no hay argumentos..."

Mejor con esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@ARGV or die "Uso: $0 archivo\n\n    archivo: /etc/passwd por ejemplo\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Se lee: "Hay argumentos o muere..."

Realmente, estamos mirando el número de argumentos que nos han pasado (@ARGV en contexto escalar). Si es 0, se ejecuta la otra parte.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor situ » 2007-11-06 16:07 @713

Como siempre un lujo el foro!
Anda perfecto gracias.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron