web-dev-qa-db-ja.com

LinuxでゲートウェイIPアドレスを見つける方法

Linuxでeth0のゲートウェイIPアドレス(つまり、ホームルーターアドレス)を見つけるには、どのコマンドを使用できますか?

シェルスクリプトで使用するには、コマンドラインアプリからIPアドレスを取得する必要があります。

9
J. Polfer

デフォルトのgw IPのみを出力するには:

route -n | grep 'UG[ \t]' | awk '{print $2}'

すべてのインターフェースのルート情報を出力するには:

route -n

または

netstat -rn
18
l0c0b0x
ip route show 0.0.0.0/0 dev eth0 | cut -d\  -f3

私のエントリーです:)

8
MikeyB

システムのデフォルトゲートウェイは、netstat -rまたはrouteの出力から取得できます。

5
Kamil Kisiel
$ 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を指しています。

3
wzzrd

これより短い人は? =)

ip r | awk '/^def/{print $3}'
2
ThorstenS

Route -nまたはnetstat -rnからの出力、および宛先0.0.0.0を検索します。

2
TCampbell

私は 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}'
2
serverhorror

netstat -rn |awk '{if($1=="0.0.0.0") print $2}'

これにより、ゲートウェイIPがきれいに印刷されます。 (Linuxスクリプトはawkなしでは何になりますか?)

インターフェイスファイルからゲートウェイを取得する場合:

#!/bin/bash
gateway=$(grep -P '^\tgateway' /etc/network/interfaces)
gateway=$(echo ${gateway:9})    # Remove "  gateway "   
echo "gateway = $gateway"
if [ $gateway == "" ]; then
    echo "gateway is blank"
    exit -1
fi
0
xinthose

デフォルトゲートウェイのIPアドレスを取得するための1つのライナーコマンド:

route | grep default | awk '{print $2}'
0
sys0dm1n