向子网上的每个 IP 发送 ping
是否有基于命令行的方法将 ping 发送到子网中的每台计算机? 想要
for(int i = 1; i < 254; i++)
ping(192.168.1.i);
强制执行 arp 解析吗?
Is there a command line based way to send pings to each computer in a subnet?
Like
for(int i = 1; i < 254; i++)
ping(192.168.1.i);
to enforce arp resolution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(16)
并非所有机器都有可用的
nmap
,但它对于任何网络发现来说都是一个很棒的工具,并且肯定比通过独立的ping
命令进行迭代更好。Not all machines have
nmap
available, but it's a wonderful tool for any network discovery, and certainly better than iterating through independentping
commands.我建议将 fping 与 mask 选项一起使用,因为您不会限制自己的 ping 功能。
响应将很容易在脚本中解析:
注意:使用参数
-a
将限制输出为可到达的 ip 地址,您可能需要使用它,否则 fping 也会打印无法到达的地址:来自 man :
更多信息:http://fping.org/
I would suggest the use of fping with the mask option, since you are not restricting yourself in ping.
The response will be easy to parse in a script:
Note: Using the argument
-a
will restrict the output to reachable ip addresses, you may want to use it otherwise fping will also print unreachable addresses:From man:
More info: http://fping.org/
广播 ping:
(在 Linux 上添加
-b
选项)Broadcast ping:
(Add a
-b
option on Linux)我刚刚提出这个问题,但答案并不令我满意。
所以我推出了自己的:
-W 1
”)。 所以1s就完成了:)编辑:
这里与脚本相同,当你的 xargs 没有 -P 标志时,就像 openwrt 中的情况一样(我刚刚发现)
I just came around this question, but the answers did not satisfy me.
So i rolled my own:
-W 1
"). So it will finish in 1s :)Edit:
And here is the same as script, for when your xargs do not have the -P flag, as is the case in openwrt (i just found out)
在 Bash shell 中:
In Bash shell:
命令行实用程序 nmap 也可以执行此操作:
The command line utility nmap can do this too:
添加
-t 1
在退出前仅等待一秒。 如果您只有少数设备连接到该子网,这会大大提高速度。Adding a
-t 1
waits only one second before exiting. This improves the speed a lot if you just have a few devices connected to that subnet.这是对上面 @david-rodríguez-dribeas 答案的修改,它并行运行所有 ping(更快),并且仅显示返回 ping 的 ip 地址的输出。
This is a modification of @david-rodríguez-dribeas answer above, which runs all the pings in parallel (much faster) and only shows the output for ip addresses which return the ping.
在linux下,我认为 ping -b 192.168.1.255 会起作用(192.168.1.255是192.168.1.*的广播地址),但是IIRC在windows下不起作用。
Under linux, I think ping -b 192.168.1.255 will work (192.168.1.255 is the broadcast address for 192.168.1.*) however IIRC that doesn't work under windows.
我来晚了,但这里有一个我为此目的制作的小脚本,我在 Windows PowerShell 中运行。 您应该能够将其复制并粘贴到 ISE 中。 然后,这将运行 arp 命令并将结果保存到 .txt 文件中并在记事本中打开它。
I came late but here is a little script I made for this purpose that I run in Windows PowerShell. You should be able to copy and paste it into the ISE. This will then run the arp command and save the results into a .txt file and open it in notepad.
这个脚本在 OpenWRT 中运行良好,
在一个新文件中放入此代码,
设置执行权限并启动它
root@r1:/# nping 192.168.1
然后查看所有连接的主机输出.txt 文件
This Script works well in OpenWRT
In a new file put this code ,
Set execution permision and launch it
root@r1:/# nping 192.168.1
then view all host connected in out.txt file
要 ping 子网中的所有 IP,请在终端中使用以下命令(预安装 nmap,如果需要,可使用brew install nmap):
其中 192.168.N.0/24,
必须设置 N - 其中您将数字放在 0 'n 255 之间,
如果您的子网中有 IP,例如 192.168.110.20 -> 用这个:
To ping all IPs in subnet, use this command in Terminal (pre-install nmap, if needed with brew install nmap):
where 192.168.N.0/24,
is must set up of N - where u put ur number between 0 'n 255,
if you have IP in subnet like 192.168.110.20 -> use this:
在 macOS 上,我使用像这样的 bash 一行命令,速度非常快:
因为 xargs 没有按预期工作(macOS xargs 不支持 -d)。 我还在 ping 中添加了 -n 以不查找 DNS 名称(节省时间)。 -W 100 对于让我的设备有足够的时间响应 ping 是必要的。
On macOS I use a bash one line command like this which is super fast:
as
xargs
didn't work as expected (-d is not supported by macOS xargs). I also added -n to ping to not lookup the DNS name (saves time). The -W 100 was necessary to give my devices enough time to respond to the ping.