我应该如何构建一个需要存储 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 的 .csv 文件。这是一个很好的解决方案吗?
我不知道为什么,但 nbtscan 给出了不同数量的列。第一行有 6 个,第二行有 7 个。太讨厌了!有谁知道如何解决它?