現在、私はスクリプトを書いており、ネットワーク上のデバイスに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
必要な情報を印刷できます。