【问题标题】:How to ping several hosts at the same time (bash) linux如何同时ping多个主机(bash)linux
【发布时间】:2015-05-28 14:10:55
【问题描述】:
ip="192.168.129."
function addToList(){
list="$list $1"

}

addToList $1
for i in $ip{$list}
do
ping -c 1 $ip$1 > /dev/null

echo "Ping Status of $ip$1 : Success" ||
echo "Ping Status of $ip$1 : Failed"
done

如何同时 ping 多台主机并在列表中显示哪个 ip 地址是正常的?

【问题讨论】:

标签: linux bash function networking ping


【解决方案1】:

一种方法是使用更强大的ping 工具,例如fping

另一种方法是在后台运行 ping:

for ip in $*; do
    if [[ "$ip" =~ "^[0-9]+$" ]]; then
        ip="192.168.129.$ip"
    fi

    (
        ping -c 1 $ip > /dev/null
        if [ $? -eq 0 ]; then
            echo "node $ip is up" 
        else
            echo "node $ip is down"
        fi
    )&
done

(...)& 在后台运行脚本。

【讨论】:

  • 列表不起作用,只有第一个参数起作用。
  • 您的代码已损坏。请参阅我的编辑。 $* 扩展到所有命令行参数。 if 会在本地网络之前添加,如果您只是使用单个数字(如 1)调用脚本
【解决方案2】:

这是我在阅读类似帖子后编写的脚本。

https://bitbucket.org/kurtjensen/nettest/src/master/

它可以使用多个文本文件作为可能的配置,并且配置文件让您有机会以更具描述性的方式命名 IP 地址。示例配置文件是

  • home.txt - 这是默认设置
  • momdad.txt - 这是给我父母的网络

所以我可以在家中运行脚本,然后在提示符处按回车键或输入类似“momdad”的内容来切换到不同网络的不同配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2014-03-31
    • 2013-05-28
    • 2011-04-27
    • 2015-12-20
    相关资源
    最近更新 更多