由于我们的(ex!:-)networkingpipe理员存在一些松散的logging,我的任务是find我们公司内部的QNAP和Synology NAS设备。 我们在英国有几百个办事处,他们都是独立的networking和独立的领域。 他们都是基于Windows(Server 2k3,2008和2012的混合)。 我们运行我们自己的家酿酿造监控软件,允许我运行任何我想要的软件。
QNAP和Synology具有独特的MAC地址,因此,如果我可以扫描networking的MAC地址并将输出传输到一个文件,我可以轻松地获得所需的信息。 问题是如何获得局域网上所有MAC地址的列表。
明显的第一步就是运行arp -a ,而且我可能会继续做下去。 但是这只会显示服务器在arpcaching超时内看到的设备。 有谁知道一个简单的方法来获得所有设备? 简单地说,我的意思是内置在Windows中的东西 – 我不想安装任何软件,因为我们正在谈论数百个不同的办事处。 nmap往往会在这些场合被提及,但Windows端口似乎需要额外的库安装。 如果我必须使用外部扫描器,那么将可执行文件复制到服务器上并运行即可。
PS:快速说明:
扫描器需要是一个命令行应用程序,所以我可以远程启动它,并输出到文件进行后续parsing。 它不能依赖于Java,因为不能保证所有的服务器都具有Java。 我相当肯定所有的服务器将至less有.Net 2.0 – 我想捏在一起,我可以敲一个快速的.Net 2.0应用程序来ping每个可能的地址在networking上,并获得与任何答复的MAC地址…
最快/最简单的方法通常是从交换机中获取arp表(假设您有可pipe理的交换机,否则,要承受很大的痛苦),并根据分配给网卡制造商的MAC地址对其进行过滤) 您正在寻找。 我倾向于使用这个网站链接到供应商的MAC,反之亦然,但也有其他人。
如果你的交换机没有被pipe理,所以你不能从一个中央位置轻松地拉起arp表,下一个最好的办法就是在每一个可以广播的网段上find一台机器,然后查找本地的arp表。 哪个…远非理想,而是真正解决了许多不良select的最佳解决scheme。 而不是交互式login到所有这些机器,就像你在你的问题似乎build议, 我会使用一些从中央位置,如工作站获得远程命令行的方法 。 WinRM,PowerShell远程处理,甚至是PSexec都是相对容易的select来实现这个目标,这个目标可能适合你,也可能不适合你,这取决于你的环境如何设置。
哦,让我补充一下,不是每个地址都ping通,就是写一个应用程序来这样做,只要点击每个子网的广播地址或者全局braodcast地址 ,如果这是你最终的路由去。 (广播地址是最后八位字节中的.255地址,全局广播地址是255.255.255.255 。)
你有没有尝试过Angry IP Scanner ?
我似乎记得,作为一个单一的可执行文件。
我以前在Linux上使用过Fing,可以在命令行运行并输出到命令行。
如果您可以预测find已安装的卷,则可以确定IP地址,然后确定它是否是您的错误设备之一。 您将需要在本地执行net use命令,或查看registry中的任何持久映射。
然后,通过探测名称本身的信息,或尝试从服务器的ping将返回MAC地址。