Вставьте Firelog в MySQL - PullRequest
       9

Вставьте Firelog в MySQL

0 голосов
/ 22 октября 2008

Мне интересно вставить журнал брандмауэра, который я печатаю, в стандартный вывод в базу данных mysql. Как бы я это сделал?

линейный вывод:

16:51:56 drop Nova <eth0 Attack Info: MS Word cascading style sheet vulnerability detected (MS08-026); attack: Content Protection Violation; viola profile: Default_Protection; src: udis; dst: Nova; proto: tcp; product: viola; service: http; s_port: 48125;
16:35:13 drop Nova <eth0 Attack Info: Macrovision InstallShield ActiveX memory corruption; attack: Web Client Enforcement Violation; SmartDefense profile: Default_Protection; src: udis; dst: Nova; proto: tcp; product: SmartDefense; service: http; s_port: 44607;

Я могу использовать Perl, Bash.

1 Ответ

1 голос
/ 22 октября 2008
  1. Определите структуру таблицы, какие поля будут соответствовать какой части строк,
  2. используйте регулярное выражение или разбиение для хранения каждой определенной части в переменной
  3. построить строку INSERT из переменных, полученных на шаге 2
  4. Отправь трубку в MySQL

Пример:

~> echo '16:51:56 drop foo <tcpip scan' | \
   perl -nle "m/(\d{2}:\d{2}:\d{2})\s(.+?)\s(.+?)\s<(.+)$/; \
   print \"INSERT INTO flog(date,action,machine,attack) \
   VALUES ('\$1','\$2','\$3','\$4')\"" | mysql -uroot -ppass flog

Вы можете использовать сам Perl для вставки значений с заполнителями с DBI. Это было бы безопаснее, если бы в журнале были специальные символы SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...