ホストグループ間でpingを実行する(すべて対両方)

ホストグループ間でpingを実行する(すべて対両方)

サーバーが4つありますが、お互いにpingを送信したいと思います。

期待される実行ping:

ping from 1 to 2, 3, and 4 
ping from 2 to 1, 3, and 4 
ping from 3 to 1, 2, and 4 
ping from 4 to 1, 2, and 3 

スクリプトでどのようにbashこれを達成できますか?

4台のサーバーすべてに対するユーザーログインは、パスワードがないように構成されています。

答え1

そのような少数のシステムを監視するにはイェンピングスクリプトでホイールを再発明する代わりに。

これは、より多くの視覚的なフィードバック、時間の経過に伴う平均記録データ、さらには他のサービスとうまく行われた作業を他の人に見せる専門的な外観と感触まで提供します。人々とPHBは視覚的なフィードバックを通して物事を監視するのが好きです。

実際、私は過去に衛星インターネット接続が安定していなかったときにインフラストラクチャの主なポイントを監視するためにそれを使用しました。

設定は小さなテキストファイルで構成され、新しいIPアドレスを簡単に追加でき、素晴らしいWebインターフェイスもあります。これを行うには、軽量Webサーバーをインストールするだけです。

ICMP / pingでは監視できないほとんどすべてを監視でき、これら4つのサーバーに加えて他の主要なデバイスも監視できます。

インターフェイスのしくみを理解するには、次を参照してください。大学外の世界につながる喫煙インターフェース

サンプル画像もご覧ください。

画像1 画像2

WebサーバーとSmokepingをインストールした後、実際の構成ファイルは次のように単純になることがあります。

*** Targets ***
 probe = FPing

 menu = Top
 title = Network Latency Grapher
 remark = Welcome to this SmokePing website.

 + mysite1
 menu = Site 1
 title = Hosts in Site 1

 ++ myhost1
 host = myhost1.mysite1.example
 ++ myhost2
 host = myhost2.mysite1.example

 + mysite2
 menu = Site 2
 title = Hosts in Site 2

 ++ myhost3
 host = myhost3.mysite2.example
 ++ myhost4
 host = myhost4.mysite2.example

答え2

名前を配列に保存して繰り返し、次にsshpingを使用して各ホストに接続します。

ips=("server1" "server2" "server3" "server4");
for((i=0;i<${#ips[@]};i++)); do 
    for((k=0;k<${#ips[@]};k++)); do
        [[ $i -ne $k ]] && ssh "${ips[$i]}" ping -c1 "${ips[$k]}"; 
    done
done

答え3

fpingインストールしましたか?これにより、次の作業が簡単になります。

$ hosts="www smtp"
$ for host in $hosts ; do 
    echo "$host:"; 
    ssh iv@$host "fping $hosts";
  done
www:
www is alive
smtp is alive
smtp:
www is alive
smtp is alive

(私はこれが怠惰な解決策であることを知っています。)

答え4

あなたの要求に完全に合います。

server1にログインし、server2とserver3のみをpingし、その逆の場合も同様です。

#!/bin/bash
while read line
do
ssh root@$line "sed "/$line/d" /root/p_final.txt |sed '/^$/d' | sed -r "s/\s+//g"|awk '{print $1}' | sed 's/^/ping -c2 /g'| sh" </dev/null
done </root/p_final.txt

p_final.txtファイルには、1対1のIPリストが含まれています。質問があれば教えてください。

関連情報