Назад | Перейти на главную страницу

Обновите базу данных mysql с помощью базы данных текстовых файлов arpwatch

Я хочу сохранить записи arpwatch в базе данных mysql для перекрестной ссылки с другой информацией, которую я храню на основе адресов Mac. Я вручную импортировал базу данных arpwatch в свою базу данных mysql, но, будучи новичком в работе с базами данных, я не уверен, как лучше всего постоянно обновлять базу данных новыми записями без создания дубликатов. Ни одно из полей не может быть уникальным, поскольку даже время часто дублируется. Меня не интересуют фактические события arpwatch, такие как флип-флоп или новая станция, только пары mac / ip / time.

Подойдет ли простой сценарий оболочки bash (или sql)? Можно ли сделать MAC-адрес плюс время каким-то составным ключом?

  • установить mac, ip, time как составной первичный ключ

  • Создан скрипт 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