grepを使用してpingコマンドのttlをオペレーティングシステムに関連付けます。

grepを使用してpingコマンドのttlをオペレーティングシステムに関連付けます。

現在、私はスクリプトを書いており、ネットワーク上のデバイスにpingを送信して接続可能であることを確認し、pingからttlデータを取得してオペレーティングシステムに通知する内容を書いています。

私はgrepコマンドがどのように機能するのか完全にはわかりませんが、これまでに得たものは次のとおりです。

for host in $(seq 1 255);
do

ping -c 1 $sn.$host | grep "Unreachable" &>/dev/null

if [ $? -eq 0 ]; then
    printf "%s\n" "$sn.$host is Offline"
fi

ping -c 1 $sn.$host | grep "ttl" &>/dev/null

if [ $? -eq 0 ]; then
    printf "%s\n" "$sn.$host is Online"
fi

done

LinuxのTTLが64、WindowsのTTLが128、iOSのTTLが255であることがわかっている場合は、「$host online. OS:Linux」のような結果を出力するようにこのスクリプトをどのように変更できますか?

"ping -c 1 $sn.$host | grep "ttl"" 行を 3 回コピーし、ttl 値を追加してから if ステートメントを生成して、必要な内容を印刷できることを知っていますが、一度にインポートしたいと思います。実行中にpingが完了したら、可能であれば移動してください。

答え1

ping次のように修正してttlを取得できます。

ttl=$( ping -c 1 turing | grep ttl | sed 's/.*ttl=\([[:digit:]]*\).*/\1/' )

その後、入力された値を直接確認し、ttl必要な情報を印刷できます。

関連情報