• Publicidad

Problemas con el módulo " DateTime " de Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Notapor explorer » 2006-08-28 11:46 @532

Uso los sistemas de administración de CentOS ANTES de instalar los programas a mano...

En tu caso, como es una distribución basada en Red Hat, será usando el yum.
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

Publicidad

Notapor TELCO71 » 2006-08-28 13:21 @598

Estimados , :D

Instalé la versión 5.8.8 a mano :wink:
Ahora tengo las 2 versiones instaladas actualmente :oops: .... ¿cómo puedo dejar la versión 5.8.8 como default ? La otra más vieja ¡¡ la tengo que desinstalar ??

Código: Seleccionar todo
[root@localhost ~]# perl5.8.8 -v

This is perl, v5.8.8 built for i686-linux

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

[root@localhost ~]# perl -v

This is perl, v5.8.5 built for i386-linux-thread-multi

Copyright 1987-2004, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.

[root@localhost ~]#



¡¡ Saludos y muchas gracias !!
Telco :)
Avatar de Usuario
TELCO71
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-08-10 10:43 @488
Ubicación: Buenos Aires / Argentina

Notapor TELCO71 » 2006-08-28 13:35 @608

Estimado Explorer ,

¿ Se podría hacer lo que necesito sin utilizar el módulo " DateTime " ?
Yo en el script lo utilizo solo para colocarle la hora actual a los archivos al momento de zipearlos.
¿Cómo podría hacer para sacar la hora del sistema sin utilizar el módulo de " DateTime " que no puedo instalar :oops: ?

Saludos :D
Telco
Avatar de Usuario
TELCO71
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-08-10 10:43 @488
Ubicación: Buenos Aires / Argentina

Notapor explorer » 2006-08-28 13:48 @617

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
explorer@next3:~> perl -le 'print join(":",(localtime)[2,1])'
20:44
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 TELCO71 » 2006-08-28 13:57 @623

¡¡¡ HI !!! :D

¿Qué te parece este código, Explorer ??
Lo que quiero... es colocarle al archivo comprimido que genero la fecha actual para luego poder identificarlos más fácilmente.
¿ Me entiendes ? Si puedes corregirlo o mejorarlo desde ya te lo agradeceré mucho :D

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

use strict;
use Net::FTP;

no warnings;

my $USERNAME = "user";
my $PWD = "passw";
my $SERVER = "ip";
my $ARCHIVO = "LOGS";

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
 $year=$year+1900;
 $mon=$mon+1;
 $fecha="YMD_$year-$mon-$mday\_HM_$hour:$min";


system("/usr/bin/gzip /root/LOGS/*.log" $ARCHIVO_$fecha )


my $FTP = Net::FTP->new($SERVER) or die ("No se pudo conectar $!");
$FTP->login($USERNAME,$PWD) or die ("Login incorrecto: $!");
$FTP->cwd("/root/LOGS/");

    $FTP->put( *.gz );

$FTP->quit();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



Saludos :wink:
TELCO
Avatar de Usuario
TELCO71
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-08-10 10:43 @488
Ubicación: Buenos Aires / Argentina

Notapor explorer » 2006-08-29 05:04 @253

Creo que hay un problema en la línea del system(). Está la variable $ARCHIVO, pero como tiene un guión bajo al lado, puede que no salga su valor. Mejor entonces escaparla con un ${ARCHIVO}.

Luego, el put de Net::FTP no admite comodines ni es recursivo. Tendrás que ir fichero a fichero o usar otro módulo.
Última edición por explorer el 2008-08-07 13:30 @604, editado 1 vez en total
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 TELCO71 » 2006-08-29 08:20 @389

Estimado Explorer , :wink:

¿ Qué tal?
Una vez más molestándote ... :oops:
Aquí corregí un poco mi script , ¿ podrías debugearlo un poco ?

Dudas :
_______

1) Luego de ejecutarlo me da el siguiente error :

¿¿ Hay algún problema con las sentencias en las que obtengo la fecha para ponerle a los archivos ??
¿ Qué estoy haciendo mal ?

Código: Seleccionar todo
[root@localhost ~]# perl FTP_script.pl
Global symbol "$sec" requires explicit package name at FTP_script.pl line 24.
Global symbol "$min" requires explicit package name at FTP_script.pl line 24.
Global symbol "$hour" requires explicit package name at FTP_script.pl line 24.
Global symbol "$mday" requires explicit package name at FTP_script.pl line 24.
Global symbol "$mon" requires explicit package name at FTP_script.pl line 24.
Global symbol "$year" requires explicit package name at FTP_script.pl line 24.
Global symbol "$wday" requires explicit package name at FTP_script.pl line 24.
Global symbol "$yday" requires explicit package name at FTP_script.pl line 24.
Global symbol "$isdst" requires explicit package name at FTP_script.pl line 24.
Global symbol "$year" requires explicit package name at FTP_script.pl line 25.
Global symbol "$year" requires explicit package name at FTP_script.pl line 25.
Global symbol "$mon" requires explicit package name at FTP_script.pl line 26.
Global symbol "$mon" requires explicit package name at FTP_script.pl line 26.
Global symbol "$fecha" requires explicit package name at FTP_script.pl line 27.
Global symbol "$year" requires explicit package name at FTP_script.pl line 27.
Global symbol "$mon" requires explicit package name at FTP_script.pl line 27.
Global symbol "$mday" requires explicit package name at FTP_script.pl line 27.
Global symbol "$hour" requires explicit package name at FTP_script.pl line 27.
Global symbol "$min" requires explicit package name at FTP_script.pl line 27.
Global symbol "$fecha" requires explicit package name at FTP_script.pl line 30.
Global symbol "$fecha" requires explicit package name at FTP_script.pl line 31.
Bareword found where operator expected at FTP_script.pl line 37, near "${ARCHIVO}_"
FTP_script.pl has too many errors.
[root@localhost ~]#


¡¡ Saludos y Muchas Gracias !! :D
TELCO
Avatar de Usuario
TELCO71
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-08-10 10:43 @488
Ubicación: Buenos Aires / Argentina

Notapor explorer » 2006-08-29 09:33 @440

La programación con 'use strict' obliga a declarar todas las variables globales como pertenecientes a un determinado paquete. Eso es lo que dice el error.
Pon un my delante de la declaración de cada variable o quita el 'use strict'
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 kidd » 2006-08-29 09:37 @442

Hola:

Tenías varios problemas, lo primero es que debido a que estas usando el pragma strict es necesario que incializes correctamente todas tus variables, luego tenías un problema de sintáxis en la variable de put.

Aquí está el código corregido que te debe de jalar correctamente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

use strict;
use Net::FTP;

no warnings;

my $USERNAME = "user";
my $PWD = "passw";
my $SERVER = "ip";
my $ARCHIVO = "LOGS";

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$year=$year+1900;
$mon=$mon+1;

my $fecha = "YMD_$year-$mon-$mday\_HM_$hour:$min";

# Empaqueto todos los archivos de log´s del directorio /root/LOGS/
system("tar cvf ${ARCHIVO}_$fecha.tar /root/LOGS/");

# Comprimo el archivo .tar
system("gzip /root/LOGS/${ARCHIVO}_$fecha.tar");

# Subo el archivo comprimido a un FTP Server ... ( o eso intento je )

my $FTP = Net::FTP->new($SERVER) or die ("No se pudo conectar $!");
   $FTP->login($USERNAME,$PWD) or die ("Login incorrecto: $!");
   $FTP->cwd("/root/LOGS/") or die("No se pudo ejecutar cwd: $!");

$FTP->put("$ARCHIVO"."_$fecha.tar.gz") or die("No se pudo hacer upload del archivo: $!");

$FTP->quit();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor TELCO71 » 2006-08-29 14:19 @638

Estimados , :D

Posteo el script que funciona OK !!

Muchas gracias por todo a Explorer y también a Kidd
Un Abrazo. :wink:
TELCO


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

use Net::FTP;

no warnings;

my $USERNAME = "user";
my $PWD = "pass";
my $SERVER = "ip_ftp_server";

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$year=$year+1900;
$mon=$mon+1;

my $fecha = "$year-$mon-$mday";


# Acá se empaquetan todos los archivos que se encuentran dentro del dir " /root/LOGS/ "

system("tar cvf BACKUPS_$fecha.tar /root/LOGS/");

# Acá se comprime el archivo que se empaquetó con TAR en el paso anterior

system("gzip /root/BACKUPS_$fecha.tar");

#En esta parte se sube en Archivo empaquetado y comprimido a un Server de FTP

my $FTP = Net::FTP->new($SERVER) or die ("No se pudo conectar $!");
   $FTP->login($USERNAME,$PWD) or die ("Login incorrecto: $!");

$FTP->put("BACKUPS_$fecha.tar.gz") or die("No se pudo hacer upload del archivo: $!");

$FTP->quit();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
TELCO71
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-08-10 10:43 @488
Ubicación: Buenos Aires / Argentina

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 7 invitados