Atualiza banco de dados mysql com banco de dados textfile arpwatch

1

Eu estou olhando para manter entradas arpwatch em um banco de dados mysql para crossreference com outras informações que eu estou armazenando com base em endereços mac. Eu importei manualmente o banco de dados arpwatch para o meu banco de dados mysql, mas sendo um novato com bancos de dados eu não tenho certeza qual seria a melhor maneira de atualizar continuamente o banco de dados com novas entradas sem criar duplicatas. Nenhum dos campos pode ser único, pois até o tempo é duplicado com frequência. Eu não estou interessado nos eventos reais do arpwatch como flip flop ou nova estação, apenas os pares de mac / ip / time.

Um simples script de shell bash (ou sql) faria o truque? Seria possível tornar o endereço mac mais o tempo uma chave composta de algum tipo?

  • o banco de dados é chamado de utilitário, a tabela é arpwatch, as colunas são mac, ip, time
  • uma tabela separada chamada 'hosts' com colunas mac, ip, tipo, nome do host, localização, notas tem o mac como a chave primária. Esta tabela irá correlacionar diferentes endereços IP que um Mac teve ao longo do tempo usando a coluna arpwatch
  • a importação inicial foi feita com o MySQL Workbench usando comandos INSERT INTO com pesquisa de criativos e substituição no arquivo de texto
por bVector 11.10.2012 / 22:06

1 resposta

0
  • definir mac, ip, hora para ser chave primária composta

  • Script awk criado: arpwatch_to_sql.awk

#!/usr/bin/awk -f
BEGIN {
        OFS=","
        FS="\t"
        print "INSERT IGNORE INTO utility.arpwatch (mac,ip,time) VALUES"
}
{print "('"$1"'", "'"$2"'", "'"$3"'""),"}
  • comando para importar atualizações:
./arpwatch_to_sql.awk /var/lib/arpwatch/arp.dat > ~/updatearp.sql
mysql -vvvv -h [sql hostname] -P 3306 -u [username] -p [password] <updatearp.sql 2>&1 1>&2|echo 'date' 'grep 'Query\|Records''>>updatearp.log
    
por 12.10.2012 / 23:36