2012-10-11 159 views
0

我應該如何構建一個數據庫,在那裏我需要存儲的IP(如INT無符號)地址,部門中正在使用他們和機器的名稱。 它將用於快速搜索可用的IP。 據瞭解,每個網絡的地址不會超過254個,我應該使用列表創建一個單獨的表格嗎?最佳方式

[編輯]

想到另外一件事。如果我現在已經知道網絡將從192.168.x.1到192.168.x.254,並且有時候我想知道哪些IP是空閒的或哪些IP被設置爲特定的機器,我應該使用地址填充表格並且後來將它們與使用過的和免費的創建一個列表聯繫起來?

[編輯]

使用NBTSCAN後,我想我可以得到我想要的數據。 命令

nbtscan 192.168.0.1-254 -t 20000 

給我:

Doing NBT name scan for addresses from 192.168.0.1-254 

IP address  NetBIOS Name  Server User    MAC address  
------------------------------------------------------------------------------ 
192.168.0.135 EREBOS   <server> EREBOS   00-00-00-00-00-00 
192.168.0.130 CHAOS      <unknown>  00-00-00-00-00-00 

一個好的結果,但:

nbtscan -s , 192.168.0.1-254 -t 20000 

給我:

192.168.0.130,CHAOS   ,,<unknown>,00-00-00-00-00-00 
192.168.0.135,EREBOS   ,<server>,EREBOS   ,00-00-00-00-00-00 

現在我使用:

<?php 
header('Content-type: text/csv'); 
header('Content-disposition: attachment;filename=ips.csv'); 

include_once "conn.php"; 

$iprange = "192.168.0.1-254"; 
$timeout = 20000; 
$separator = ","; 

$strre = shell_exec("nbtscan -s $separator $iprange -t $timeout"); 
echo preg_replace('/ +/',',', $strre); 

要生成,我可以導入到MySQL .cs​​v文件。 這是一個很好的溶劑嗎?

我不知道爲什麼,但NBTSCAN是給不同的列數。第一行有6個,第二個有7個。這很煩人!有誰知道如何解決它?

+0

您應該將其存儲爲字符串字段,並使其足夠長以存儲ipv6地址。這樣就可以面向未來,並且更容易瀏覽數據庫中的數據。你可以用一個unsigned int存儲IPV4地址,但是它們很難在數據庫中查看,有時能夠查看數據庫中的東西是很好的。您甚至可以在桌面上放置觸發器,以確保IP地址格式正確。你可能沒有足夠的地址來存儲空間會成爲問題。 – Kibbee

+0

現在我使用兩個表中的IP地址和另一個扇區。機器名稱在IP表格中。 – tenshimsm

+0

現在我使用兩個表中的IP地址和另一個扇區/地方。機器名稱在IP表格中。 我將IP存儲爲INT UNSIGNED。我正在使用INET_ATON(field_name)插入數據並使用INET_NTOA(field_name)來選擇數據 – tenshimsm

回答

0

你有沒有利用SolarWinds的免費IP地址跟蹤考慮?

http://www.solarwinds.com/downloads/

我以前用它和它的工作以及我的需求。爲什麼重新發明輪子?

+0

謝謝。但它適用於Windows,因爲Linux最適合我。它需要.NET!這意味着使用了太多的資源。 – tenshimsm

+0

@tenshimsm沒問題,不知道你使用的操作系統。 –

+0

:D我的錯誤。我應該提到我希望通過Intranet訪問它。搜索系統。 – tenshimsm