コンピュータ名をコマンドライン引数として使用し、ホストがローカルネットワーク上にあるかどうかを知らせるメッセージを表示するスクリプトを作成しようとしています。
これが私が持っているものです:
#!/bin/bash
gateway=$(ip route | grep default | cut -d' ' -f3)
if [[ $(ip route get "$1" | grep -q $gateway) ]]; then
echo "$1 is on the local network"
else
echo "$1 is not on the local network"
fi
マイコンピュータ名(ubuntu)を使用して実行するたびに、次の出力が表示されます。
Error: any valid prefix is expected rather than "ubuntu".
ubuntu is not on the local network
このエラーが何を意味するのか、なぜエラーが発生するのか、スクリプトが期待どおりに機能するのかはわかりません。どんなアドバイスも本当にありがとうございます。ありがとうございます!
ベストアンサー1
私のUbuntu Linuxでは、IPアドレスは4番目のフィールドにあります。切断セパレータがあなたのアイデアと一致していることを確認してください
ip r | grep default && ip r | grep default | cut -d' ' -f3 && ip r | grep default | cut -d' ' -f4
none default via 192.168.1.1 dev eth1 proto none metric 0
via
192.168.1.1