Bash 脚本在交错的终端窗口中 ping 多个主机

Bash 脚本在交错的终端窗口中 ping 多个主机

我想要:

  1. 打开5个终端窗口
  2. 使用每个终端窗口对网络上的不同主机执行 ping 操作(连续)

目前,我每次都手动执行此操作,以便找出我糟糕的家庭网络中发生的情况......另外,我想知道是否有一本好书可以让我自学 bash 脚本。令人印象深刻。

感谢我可以提前获得的所有帮助。

目前这就是我所做的

答案1

您可以选择通过脚本来执行此操作(假设您使用gnome-terminalIPv4)。下面,我为每个 ping 的 IP 地址打开一个终端窗口,并按您可以调整的像素数量错开这些窗口。每个 Gnome 终端窗口都用包含 ping 的 IP 的标题进行标识:

创建脚本后,例如my_ping.sh,请确保使其可执行,方法是:

$ chmod a+x my_ping.sh        # see manual page for `chmod' if needed.

A版

$ cat my_ping.sh

#!/usr/bin/bash
ip_array=(8.8.8.8 
          8.8.4.4 
          192.168.1.1) # define array with as many IPs as needed
x0=50; y0=50    # top left corner pixel coordinates of 1st term-window to open
pix_offset=50   # pixel xy-offset for subsequently staggered PING windows

for ip in "${ip_array[@]}"; do
    sizeloc="80X24+$x0+$y0"
    gnome-terminal --window \
                   --geometry="$sizeloc" \
                   --title "PING $ip" \
                   -- \ping "$ip"
    x0=$((x0+pix_offset));y0=$((y0+pix_offset))
done

用法:$ my_ping.sh

B版

您可能需要提供要 ping 的 IP 地址列表作为脚本的参数my_ping.sh

$ cat my_ping.sh

#!/usr/bin/bash
x0=50; y0=50
pix_offset=50

# Include IP type-checking here if needed 
for ip in "$@"; do
    sizeloc="80X24+$x0+$y0"
    gnome-terminal --window \
                   --geometry="$sizeloc" \
                   --title "PING $ip" \
                   -- \ping "$ip"
    x0=$((x0+pix_offset)); y0=$((y0+pix_offset))
done

用法:$ my_ping.sh 8.8.8.8 8.8.4.4 192.168.1.1 [...]


理想情况下,至少在“版本 B”中,您可能应该确保脚本对 IP 地址进行类型检查。您可以在循环之前的脚本中执行此操作for。 HTH。

相关内容