我正在構建一個數據庫,其中包含有關網絡上主機的信息。我將這些數據顯示在由PHPMaker生成的網站上。 (http://www.hkvstore.com/phpmaker/)編輯nmap2db.pl(更改數據庫更新語句)
該項目的目的是建立一個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'] . "')";
現在,我也有一個perl腳本調用nmap2db.pl填充數據(http://search.cpan.org/~apersaud/Nmap-Parser-1.2/tools/nmap2db.pl)的可以非常容易地對子網進行nmap掃描並將該數據填充到表中。
我需要什麼:
我需要的Perl腳本的舊數據保存到IPHistoric表,而不是隻覆蓋每次。 我已經做了一些細微修改腳本(移除了DB模式的某些字段)
引擎收錄完整的腳本: http://pastebin.com/V3AwcBVR
它看起來像線92〜95是神奇在哪裏發生。
$S{INSERT_HOST}
= qq{REPLACE INTO }
. $G{TABLE}
. qq{ (ip, mac, status, hostname) VALUES (?,?,?,?)};
所以無論如何......我不知道Perl,我也不擅長SQL。是否清楚我想要達到什麼目的?是否可以編輯這個腳本來做我想要的?
我明白你在說什麼,但我喜歡我的方式更好:)這裏的原因:MAC地址不能是主要的,因爲不會永遠是一個...但主要是我沒有好的方法來顯示整個IP範圍的數據....也許我可以寫一個匹配的ip範圍的選擇語句,並找到最新的記錄。嗯。我會考慮一下,並與我的DBA傢伙討論這個計劃。我喜歡有選擇,我仍然想找到一種方法來完成我最初的要求。 – AaronJAnderson 2012-01-05 22:21:29
啊,我明白你現在說的話。不知何故,我錯過了你想要一張單獨的桌子。 – AWT 2012-01-06 18:15:49
然後我會在腳本的第98行創建另一個函數,正好在$ np-> callback(\&insert_host)之上;並調用一個名爲insert_historic的新函數。 – AWT 2012-01-06 18:16:56