用arpwatch文本文件数据库更新mysql数据库

我正在寻找保存arpwatch条目在mysql数据库与我基于mac地址存储的其他信息交叉引用。 我已经手动将arpwatch数据库导入到我的mysql数据库中,但作为数据库的新手,我不确定用新条目不断更新数据库而不创build重复项的最佳方法是什么。 没有一个领域可以是唯一的,即使时间频繁地重复。 我对触发器或新站等实际arpwatch事件不感兴趣,只是mac / ip /时间配对。

一个简单的bash(或sql)shell脚本可以做到这一点吗? 是否有可能使mac地址加上时间是某种复合键?

  • 数据库被称为实用程序,表是arpwatch,列是mac,ip,time
  • 一个名为“主机”与列MAC,IP,types,主机名,位置,笔记的独立表具有MAC作为主键。 这个表格将使用arpwatch列将随着时间的推移关联不同的IP地址
  • 使用INSERT INTO命令和MySQL Workbench进行初始导入,并使用创意search并replace文本文件

  • 设置mac,ip,时间为复合主键

  • 创build了awk脚本: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"'""),"} 

  • 命令导入更新:

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