以编程方式执行递归ping shell命令

问题描述 投票:0回答:2

我需要以编程方式获取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命令运行它,而且我还想获​​得将结果打印在终端上的程序,以便我可以使用它。

我在这里呆了相当长的一段时间,无法正常工作。如果您的专家可以提供代码段示例,任何参考或任何方法来解决此问题,我将不胜感激。

我需要以编程方式获取LAN内所有设备的IP地址。我打算通过使用system()通过c发出以下shell命令来实现这一点。 ...

c linux shell system
2个回答
3
投票

您正在尝试做的是在本地LAN上进行端口扫描的一种方法。要做到这一点非常困难,因为涉及许多不同的潜在错误条件。它也可能非常慢,因此非常需要使用并行性。


1
投票

编写一个以ip作为参数的shell脚本会更容易。然后,从系统调用中,您可以简单地运行shell脚本。

© www.soinside.com 2019 - 2024. All rights reserved.