在 Ubuntu Server 12.04 LTS 中写入 mysql 数据库

在 Ubuntu Server 12.04 LTS 中写入 mysql 数据库

我正在使用 snmp 从交换机检索 arp 表。我可以将表轮询到文本文件,但我想将其轮询到 mysql db。这是我用来轮询文本文件的代码

*/5 * * * *  root /usr/bin/snmpbulkwalk -v 2c -c public(assumed community) -OXsq  (ip adress of switch) .1.3.6.1.2.1.3.1.1.2 > /tmp/S01_ARP.txt

我该如何修改,以便将结果轮询到我在 mysql 数据库中创建的表 arp_tab 输出结果如下

atPhysAddress[10][1.172.16.1.5] "80 EE 73 2F 0B 40 "
atPhysAddress[10][1.172.16.1.25] "38 EA A7 6D 2E 8E "
atPhysAddress[10][1.172.16.1.32] "BC 51 FE 50 16 F8 "
atPhysAddress[10][1.172.16.1.200] "00 06 53 FE 39 E0 "
atPhysAddress[10][1.172.16.1.210] "00 18 BA 51 5B 41 "

我希望将 IP 地址和 MAC 地址映射到数据库中

答案1

首先创建 mysql 数据库:数据库名称

创建包含 2 个文本字段(IP 和 MAC)的 mysql 表:

#!/bin/bash

sed  's/atPhysAddress\[10\]\[//g' arp.txt | sed 's/\]\ \"/\|/g' | sed 's/\ \"/\|/g'> /tmp/arp.new

mysql -uroot -ppassword  databasename <<EOF
load data infile '/tmp/arp.new'
into table tablename
fields terminated by '|'
escaped by '\\\'
lines terminated by '\n';
EOF

答案2

首先,创建一个数据库 mydatabase,然后创建一个表 mytable,其中包含字段 ip_address 和 mac_address。我假设您知道如何执行此操作。如果您不知道,请指定此项。

尝试将输出转换为如下例所示的格式:

INSERT INTO mytable SET ip_address = '1.172.16.1.5', mac_address = "80 EE 73 2F 0B 40";

然后将SQL命令输入到mysql数据库中。

mysql mydatabase -u mydatabase_user -p < /tmp/S01_ARP.txt

出现提示时提供数据库密码。

相关内容