Linuxでeth0のゲートウェイIPアドレス(つまり、ホームルーターアドレス)を見つけるために使用できるコマンドは何ですか?
シェルスクリプトで使用するには、コマンドラインアプリからIPアドレスを取得する必要があります。
Linuxでeth0のゲートウェイIPアドレス(つまり、ホームルーターアドレス)を見つけるために使用できるコマンドは何ですか?
シェルスクリプトで使用するには、コマンドラインアプリからIPアドレスを取得する必要があります。
回答:
デフォルトのgw IPのみを出力するには:
route -n | grep 'UG[ \t]' | awk '{print $2}'
すべてのインターフェースのルート情報を出力するには:
route -n
または
netstat -rn
route -n | awk '{if($4=="UG")print $2}'
route -n|awk '$4~/G/{print $2; exit(0)}'
最初のゲートウェイのようなものをお勧めしip route get IP
ますが、それroute
だけでは特定のIPに実際に到達するルートが一覧表示されるため、単独では見つけるのが難しいためです
ip route show 0.0.0.0/0 dev eth0 | cut -d\ -f3
私のエントリーです:)
cut
バイナリの約20倍軽量ですawk
。
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.199.0 0.0.0.0 255.255.255.240 U 0 0 0 virbr1
192.168.200.0 0.0.0.0 255.255.255.240 U 0 0 0 virbr2
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 wlan0
0.0.0.0がデフォルトゲートウェイであり、私の場所の192.168.1.254を指しています。
私はiprouteパッケージを好みます:
# get the default route
ip route list | awk ' /^default/ {print $3}'
# get the default route but limit on eth0 (output may be empty)
ip route list dev eth0 | awk ' /^default/ {print $3}'
これより短い人は?=)
ip r | awk '/^def/{print $3}'
ip r | awk 'END{print $3}'
3文字短いです。
read x x i x< <(ip r g 1)
、結果は今後の使用のために変数$ iにあります
netstat -rn |awk '{if($1=="0.0.0.0") print $2}'
これにより、ゲートウェイIPがきれいに印刷されます。(Linuxスクリプティングはawkがないとどうなりますか?)
netstat -rn|sed -n '/^0.0.0.0/{ s/^[0. ]*//; s/ .*$//; p; }