【发布时间】:2023-04-11 04:14:01
【问题描述】:
我正在构建一个数据库,其中包含有关我网络上主机的信息。我在 PHPMaker 生成的网站上展示了这些数据。 (http://www.hkvstore.com/phpmaker/)
这个项目的目的是建立一个IP地址管理系统。
在数据库中保留任何记录的历史数据非常重要。如果我们手动更改 PHPMaker 构建站点上的记录,我们可以将旧记录数据写入另一个表。用于实现这一点的代码如下所示。 (可能不完全相关,但我把它放在这里,以便您了解数据的样子)
$sInsertSql = "INSERT INTO IPHistoric (ip, status, hostname, last_scanned, mac, ManualHost, Reservation)
VALUES ('" . $rsold['ip'] . "', '" . $rsold['status'] . "', '" . $rsold['hostname'] . "', '" . $rsold['last_scanned'] . "', '" . $rsold['mac'] . "', '" . $rsold['ManualHost'] . "', '". $rsold['Reservation'] . "')";
现在,我还使用名为 nmap2db.pl (http://search.cpan.org/~apersaud/Nmap-Parser-1.2/tools/nmap2db.pl) 的 perl 脚本填充数据,这使得对子网进行 nmap 扫描并将该数据填充到表中变得非常容易。
我需要什么:
我需要 perl 脚本将所有旧数据保存到 IPHistoric 表中,而不是每次都覆盖。 我对脚本做了一些细微的修改(从 db 架构中删除了一些字段)
完整脚本的Pastebin: http://pastebin.com/V3AwcBVR
看起来第 92 到 95 行是魔法发生的地方。
$S{INSERT_HOST}
= qq{REPLACE INTO }
. $G{TABLE}
. qq{ (ip, mac, status, hostname) VALUES (?,?,?,?)};
所以无论如何...我不了解 Perl,而且我不太擅长 SQL。清楚我想要实现的目标吗?是否可以编辑此脚本以执行我想要的操作?
【问题讨论】: