ディレクトリ内のテキストファイルから複数のホストをpingできるスクリプトを作成しようとしています。ホストには特定の命名規則があり、グループ化されます。たとえば、テキストファイルから
10.10.10.10 XX-YY_ZZ name of the host in form of URL
ファイルはCSVではなくtxtです。
私がしたいのは、次のような結果を返す簡単なことです。pingme YY
(YY
特定の場所に属するデバイス間の共通要素はどこにありますか?)
XX-YY_ZZ = ALIVE
おそらくとても簡単です。しかし、私たちはLinux REDHATを実行しているので、どうやって始めるべきかわかりません。
どんなアドバイスやアイデアにも感謝します。
ベストアンサー1
私はこれがあなたが望むことをすると信じています:
pingme () {
hostfile="/home/jbutryn/test/hostfile.txt"
IFS= mapfile -t hosts < <(cat $hostfile)
for host in "${hosts[@]}"; do
match=$(echo "$host" | grep -o "\-$1_" | sed 's/-//' | sed 's/_//')
if [[ "$match" = "$1" ]]; then
hostname=$(echo "$host" | awk '{print $2}')
ping -c1 -W1 $(echo "$host" | awk '{print $1}') > /dev/null
if [[ $? = 0 ]]; then
echo "$hostname is alive"
elif [[ $? = 1 ]]; then
echo "$hostname is dead"
fi
fi
done
}
次のように関数を実行できます。次 pingme UR01
のような結果を返す必要があります。
[root@JBCLAMP001 test]# pingme CC
BB-CC_DD is dead
AA-CC_EE is alive
[root@JBCLAMP001 test]# pingme DD
CC-DD_EE is dead
CC-DD_JJ is alive