我需要以编程方式获取LAN中所有设备的IP地址。我计划通过使用c
通过system()
发出以下shell命令来实现。
for ip in $(perl -e '$,="\n"; print 1 .. 254;') ; do ping -t 1 -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done
然而,它并不常用。首先,它不会在终端上打印出结果,如果要在终端中直接将它作为shell命令运行,我也希望获得在终端上打印到程序的结果,以便我可以使用它。
我在这已经有一段时间了,无法让它发挥作用。如果您的专家可以提供代码段示例,任何参考或任何方法来解决此问题,我将非常感激。
非常感谢你。
答案 0 :(得分:3)
您要做的是在本地LAN上进行端口扫描。这样做很困难,涉及许多不同的潜在错误条件。它也可能非常慢,因此非常需要使用并行性。
除非这是掌握的重要技术,否则我同意使用第三方解决方案,而不是尝试编写自己的解决方案。但是,Ping不一定是正确的选择。
用于此目的的标准工具是NMAP。它可以做你想要的,还有其他的东西。链接到这里:http://nmap.org/。
答案 1 :(得分:1)
编写一个以ip作为参数的shell脚本会更容易。然后从系统调用中,您只需运行shell脚本即可。
话虽如此,最简单的方法是实际使用库函数来实现你想要做的事情。