サーバーが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つのサーバーに加えて他の主要なデバイスも監視できます。
インターフェイスのしくみを理解するには、次を参照してください。大学外の世界につながる喫煙インターフェース
サンプル画像もご覧ください。
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
名前を配列に保存して繰り返し、次にssh
pingを使用して各ホストに接続します。
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リストが含まれています。質問があれば教えてください。