• Publicidad

Editar Logs

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

Re: Editar Logs

Notapor crodriguez » 2013-01-07 14:38 @652

Hola. Ejecuté el código que me dejaste pero tuve que cambiar la versión a 5.12 porque es la que tengo, y bueno, darle la ruta respectiva del archivo y me sale lo mismo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
EriCk.COm.pe
EricK.COM.pe
EricK.CoM.pe
EricK.cOM.pe
EricK.com.pe
IMAP.CuadROS.pe
IMAP.cUADroS.pe
IMAP.cuADRos.pe
IMAp.CUADRos.pe
IMAp.CUAdRos.pe
IMAp.DelCAStILLo.pe
IMAp.DelCaStillo.pe
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Todo esto es el archivo completo.

O pueda ser que es porque la versión que tengo es la v5.12, o quizás no estoy usando el comando uniq.
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Publicidad

Re: Editar Logs

Notapor explorer » 2013-01-07 14:55 @663

Vale, el problema son los cambios de mayúsculas y minúsculas.

He reeditado el código y he cambiado las líneas 2 y 10. Fíjate que llamo a la función lc() a la URL antes de crear su entrada hash.

Bájate el código y pruébalo. Verás como ahora sí funciona.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Editar Logs

Notapor crodriguez » 2013-01-07 15:57 @706

¡¡¡Maestro!!! ¡¡¡Muchísimas gracias!!! Ya funciona todo a la perfección, te lo agradezco infinitamente y ya más adelante seguiré molestando con nuevas consultas. ¡je,je! :D
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Pasar un log a una base de datos

Notapor crodriguez » 2013-01-07 17:48 @783

Hola nuevamente. Bueno, ante todo quería agradecer toda la ayuda que me han brindado desde que ingresé a este foro y, bueno, en esta oportunidad quería hacer una consulta.

¿Cómo podría o de qué forma podría hacer para que un archivo de texto que generé anteriormente con esta forma:

smtp.delcastillo.pe
adsp._domainkey.cuadros.pe
adsp._domainkey.delcastillo.pe
dmarc.binaria.com.pe
dmarc.cuadros.pe
dmarc.delcastillo.pe
sipfederationtls._tcp.cuadros.pe
binaria.com.pe
binaria.pe
cuadros.pe
delcastillo.com.pe
delcastillo.pe

poder hacer que cada una de las direcciones ingrese a una base de datos?

Cada dirección tendrá su propio id y, bueno, antes de ingresar todas estas direcciones que están en un archivo de texto, saber si alguna de éstas ya está en mi base de datos para que no la tome en cuenta, y así poder ir armando un directorio.

Si alguien me puede dar una idea de cómo hacer esto se los voy agradecer ya que no conozco nada de Perl. Casi todo lo hago tomando otros códigos y, bueno, tratando de entenderlos.

Nuevamente, muchas gracias por toda su ayuda.
Saludos.
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Re: Pasar un log a una base de datos

Notapor explorer » 2013-01-07 18:15 @802

crodriguez escribiste:poder hacer que cada una de las direcciones ingrese a una base de datos?
En la sección de tutoriales (menú de arriba) hay unos cuantos ejemplos de cómo acceder con Perl a las bases de datos.

crodriguez escribiste:Cada dirección tendrá su propio id y, bueno, antes de ingresar todas estas direcciones que están en un archivo de texto, saber si alguna de éstas ya está en mi base de datos para que no la tome en cuenta, y así poder ir armando un directorio.
Si cada entrada a la base de datos la podemos crear de forma única (id incluido) entonces vale con usar siempre UPDATE. Si la entrada no existía en la base de datos, creará una nueva (como si hubiéramos hecho un INSERT). Si no, actualizará la entrada anterior.

Otra opción es hacer, primero, una consulta para recuperar todas las direcciones, y meterlas en el hash, antes de la lectura del log. Así, ya estaremos descartando las repeticiones. Y luego quedaría grabar todo el hash (con UPDATE) a la base de datos. Lo malo es que esto puede llevar mucho tiempo. Mejor es anotar en un hash aparte aquellas direcciones que son realmente nuevas, y será ese hash el que grabaremos. Eso se puede hacer en el momento de ir leyendo las entradas del log.

crodriguez escribiste:Si alguien me puede dar una idea de cómo hacer esto se los voy agradecer ya que no conozco nada de Perl. Casi todo lo hago tomando otros códigos y, bueno, tratando de entenderlos.
Pero, ¡eso es horrible! ¿No es mejor que lo programes en el lenguaje que más domines?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Editar Logs

Notapor crodriguez » 2013-01-08 11:08 @506

Bueno, nuevamente muchas gracias por la ayuda y sí, tienes razón, podría hacerlo por ejemplo en Visual o C#, pero esto es un trabajo que me propuse hacer, y bueno, a la vez también quería saber más sobre este lenguaje :)

Pero bueno, solo tengo que seguir, más bien muchas gracias por la ayuda que se me ha brindado y ya cuando tenga mi primera conexión con la BD publicaré algo :)

Saludos
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Re: Editar Logs

Notapor explorer » 2013-01-08 12:07 @547

Bueno, lo normal es leer algo de código, hecho por otros, hacer algunos programas pequeños, para probar la sintaxis. Y como informático, luego me gusta leer la documentación y las páginas de manual.

El ejercicio que has planteado tiene una parte primera sencilla (hay muchos ejemplos parecidos a lo largo de todo el foro), pero la segunda parte puede ser algo más compleja, al tener que guardar valores únicos en una base de datos.

Pero bueno, con un poco de paciencia, todo sale.

Espero que, al menos, te esté gustando lo que estás viendo de este lenguaje.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Editar Logs

Notapor crodriguez » 2013-01-11 23:24 @016

Sí, justo estoy revisando códigos de conexión a base de datos y estoy tratando de conectar pero me un error así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[root@crawler ~]# perl /root/logs/ns5/conexion2.pl
DBI connect('crawlerdb;host=123.123.123.123','root',...) failed: Lost connection to MySQL server at 'reading initial communication packet', system error: 0 at /root/logs/ns5/conexion2.pl line 20
Error de conexion: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
[root@crawler ~]# perl /root/logs/ns5/conexion2.pl
DBI connect('crawlerdb;host=db.ejemplo.pe','root',...) failed: Can't connect to MySQL server on 'db.ejemplo.pe' (110) at /root/logs/ns5/conexion2.pl line 20
Error de conexion: Can't connect to MySQL server on 'db.ejemplo.pe' (110)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Muchas gracias nuevamente por la ayuda, este es un excelente foro y acá he aprendido muchas cosas que no sabía :)

PD: en la parte de 123.123.123.123 puse el host del servidor que me están prestando, y bueno, no puse el real porque me pidieron que no lo haga.
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Re: Editar Logs

Notapor explorer » 2013-01-11 23:44 @030

El mensaje de error dice que el servidor de base de datos en db.ejemplo.pe no responde.

¿Seguro que esa máquina tiene funcionando un servidor de base de datos, y es MySQL, y tiene activado escuchar en el puerto TCP 3306 (el de por defecto para MySQL), y en tu máquina y en la del servidor no hay ningún cortafuegos que impida acceder a ese puerto?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Editar Logs

Notapor crodriguez » 2013-01-11 23:46 @032

Bueno, la base de datos está en MySQL y el servidor escucha en el puerto 60022, pero ¿cómo haría para poner eso en mi código?

#!/usr/bin/perl

use strict;
use warnings;

use DBI;

my $dbname = 'crawlerdb';
my $dbhost = 'ejemplo.pe'; #aca podria ser tabien el ip?? 111.222.333.444
my $dbuser = 'usuario';
my $dbpwd = 'pass';

my $dbh;
my $stmt;
my $sth;
my $row;

## Conectarse a la base de datos
##
$dbh = DBI->connect("DBI:mysql:$dbname;host=$dbhost", $dbuser, $dbpwd)
or die "Error de conexion: $DBI::errstr\n";

## Preparar la sentencia de insercion en la base de datos
$sth = $dbh->prepare(
"insert into direcciones ( nombre) values ( ? )"
);

## Insertar un registro en la tabla
##
$sth->execute( "abc.pe" );

## Leer los registros de la tabla
##
$sth = $dbh->prepare("select nombre from direcciones");
$sth->execute();
while ($row = $sth->fetchrow_hashref) {
print "id: " . $row->{id} . "\n";
print "nombre: " . $row->{nombre} . "\n";

}
## Desconectarse de la base de datos
##
if (! $dbh->disconnect) {
warn "Error al desconectarse de la base de datos: $DBI::errstr\n";
}
#####################################################################
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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

cron