我知道可以运行 Bashfor
循环和ping
多台服务器的方法,是否有我可以使用的 Linux CLI 工具,它允许我执行此操作,而无需将 Bash 脚本写入ping
服务器列表一次一个?
像这样的东西:
$ ping host1 host2 host3
注意:我正在专门寻找 CentOS/Fedora,但如果它适用于其他发行版也很好。
我知道可以运行 Bashfor
循环和ping
多台服务器的方法,是否有我可以使用的 Linux CLI 工具,它允许我执行此操作,而无需将 Bash 脚本写入ping
服务器列表一次一个?
像这样的东西:
$ ping host1 host2 host3
注意:我正在专门寻找 CentOS/Fedora,但如果它适用于其他发行版也很好。
如果您查看NMAP 项目,您会发现它在仅
nmap
. 这些工具之一是nping
,它包括以下功能:nping
在标准 EPEL 存储库中进行引导。用法
要 ping 多台服务器,您只需告知
nping
名称/IP 以及您要使用的协议。在这里,因为我们想模仿传统ping
CLI 的功能,我们将使用 ICMP。我发现这个工具的唯一缺点是使用需要 root 权限的 ICMP 模式。
fping位于同名的 Fedora 软件包中,并允许许多主机或一组 IP 地址。
我建议使用GNU Parallel
输出将被交错
描述:
我知道这不是你所要求的,而是一个 bash 脚本来完成这个:
这会将您的端点作为命令行参数,并作为后台进程向每个端点发送 5 个计数 ping,然后等待所有端点完成后再退出。它将打印 ping 输出的最后三行,其中包含有关成功率和延迟的有用统计信息。
我想这可以为你做吗?
它利用了
printf
“自动迭代”其参数的能力,同时在每个参数上重新使用其格式字符串。因此,上面为作为参数提供的每个主机printf
生成了一个ping <hostname> &
字符串序列,并通过命令替换将这样的命令序列馈送到eval
命令以使它们立即执行。printf
和eval
命令是 POSIX 标准,以及命令替换。将整个此类命令包含在一个包含这样的 and-ed 的子shell中
wait
:提供通过简单的Ctrl+C.
否则,您可以
ping
通过 shell 通常的作业控制单独控制每个命令。如果您的 shell 也支持 Process Substitutions,您还可以使用以下内容:
少输入几个字符。
要点与 s 相同,但通过 Process Substitution 将s
eval
的序列提供给(aka )命令。ping
.
source
通过使用通用
xargs
命令构建一个执行多个ping
请求:其中
host1 host2 host3
可以是可变数量的主机(IP 或主机名的任意组合)。这将更改
xargs
默认设置,强制每次 ping 执行 1 个输入参数,并允许无限数量的并行子进程(每个 ping 主机 1 个)。如果打算 ping 大量主机(它们都将被处理;同时处理的更少) ,将-P
(aka )设置为一个合理的值可能是明智的。--max-procs
它足够短,可以直接使用,可以作为一个函数添加到你的 shell 配置文件或 rc 文件中,或者在你的
$PATH
. 在下面的示例中,-P
已设置为 10 以避免过多的资源消耗。示例脚本:
/usr/bin/mping
内的示例函数
~/.bashrc
并用作:
Nmap支持 ping 扫描 (ICMP) 和多个主机:
nmap -sn -n 127.0.0.1 8.8.8.8
您还可以创建一个包含所有目标 IP(由空格或换行符分隔)的文件,名为
targets.txt
. 然后运行:nmap -sn -n -iL targets.txt
选项说明:
-sn
平扫描。-n
禁用 DNS 解析。-iL
输入文件名。如果您想要 ping 大量目标,其他有趣的选项:
-T4
增加时间以减少扫描持续时间。--min-parallelism 100
增加并行探针的数量。-oG <file>
将扫描结果以 Grepable 格式写入文件。不创建文件
请记住,您还可以放弃创建文件并使用 a
-
从管道获取输入|
,或者通过传统方法通过 STDIN 重定向输出。例子:
-或者-
-或者-
参考
我不知道您到底想要什么,但您可以将最后 8 位设置更改为十进制 255,这样您的主机将收到广播,实际上,它会将 ping 数据包传输到网络中存在的所有设备。
输出