すれちがい端末ウィンドウで複数のホストをpingするBashスクリプト

すれちがい端末ウィンドウで複数のホストをpingするBashスクリプト

私が欲しい:

  1. 5つの端末ウィンドウを開く
  2. 各ターミナルウィンドウを使用して、ネットワーク上の他のホストを(継続的に)pingします。

現在、私は不都合なホームネットワークで何が起こっているのかを把握するために、毎回手動でこれを行っています。また、bashスクリプトを自分で教えるために使用できる良い本があるかどうか疑問に思います。印象的な。

事前に受け取ることができるすべての助けに感謝します。

現在私がしていることはこれです

ベストアンサー1

スクリプトを使用してこれを行うことを選択できます(IPv4を使用していると仮定gnome-terminal)。以下では、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。

おすすめ記事