コンピュータ名とローカルネットワークに関連するスクリプトの実行中にエラーが発生しました。

コンピュータ名とローカルネットワークに関連するスクリプトの実行中にエラーが発生しました。

コンピュータ名をコマンドライン引数として使用し、ホストがローカルネットワーク上にあるかどうかを知らせるメッセージを表示するスクリプトを作成しようとしています。

これが私が持っているものです:

#!/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

おすすめ記事