J. Polfer Asked: 2009-06-25 10:22:29 +0800 CST2009-06-25 10:22:29 +0800 CST 2009-06-25 10:22:29 +0800 CST 如何在 Linux 中找到网关 IP 地址 772 您可以使用什么命令在 Linux 中查找 eth0 的网关 IP 地址(即家庭路由器地址)? 我需要从命令行应用程序获取 IP 地址以在 shell 脚本中使用。 linux scripting shell tcpip gateway 12 个回答 Voted Best Answer l0c0b0x 2009-06-25T10:31:09+08:002009-06-25T10:31:09+08:00 仅打印默认 gw IP: route -n | grep 'UG[ \t]' | awk '{print $2}' 打印所有接口的路由信息: route -n 或者 netstat -rn MikeyB 2009-06-25T11:26:54+08:002009-06-25T11:26:54+08:00 ip route show 0.0.0.0/0 dev eth0 | cut -d\ -f3 是我的条目:) Kamil Kisiel 2009-06-25T10:25:46+08:002009-06-25T10:25:46+08:00 netstat -r您可以从或的输出中获取系统的默认网关route wzzrd 2009-06-25T10:30:40+08:002009-06-25T10:30:40+08:00 $ 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。 Martin M. 2009-06-25T10:40:08+08:002009-06-25T10:40:08+08:00 我更喜欢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}' TCampbell 2009-06-25T10:26:57+08:002009-06-25T10:26:57+08:00 route -n 或 netstat -rn 的输出,并搜索目标 0.0.0.0。 ThorstenS 2011-12-20T22:32:52+08:002011-12-20T22:32:52+08:00 有人比这矮吗?=) ip r | awk '/^def/{print $3}' href_ 2021-05-26T23:43:24+08:002021-05-26T23:43:24+08:00 从 iproute2 4.14.1 开始,你还可以为很多命令输出 JSON。 所以这会起作用: ip -j route show 0.0.0.0/0 dev <interface> | jq -r '.[0].gateway' 在你的情况下: ip -j route show 0.0.0.0/0 dev eth0 | jq -r '.[0].gateway' 请注意,您需要jq为此,但取决于您可能已经可用的环境 - 我知道这是我的情况。 Andrew Rafael M. Banas 2009-10-14T23:48:57+08:002009-10-14T23:48:57+08:00 netstat -rn |awk '{if($1=="0.0.0.0") print $2}' 这将干净地打印网关 IP。(如果没有awk,linux 脚本会怎样?) xinthose 2017-09-08T06:18:11+08:002017-09-08T06:18:11+08:00 如果您想从接口文件中获取网关: #!/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
仅打印默认 gw IP:
打印所有接口的路由信息:
或者
是我的条目:)
netstat -r
您可以从或的输出中获取系统的默认网关route
0.0.0.0 是您的默认网关,在我的位置指向 192.168.1.254。
我更喜欢iproute包:
route -n 或 netstat -rn 的输出,并搜索目标 0.0.0.0。
有人比这矮吗?=)
从 iproute2 4.14.1 开始,你还可以为很多命令输出 JSON。
所以这会起作用:
在你的情况下:
请注意,您需要jq为此,但取决于您可能已经可用的环境 - 我知道这是我的情况。
netstat -rn |awk '{if($1=="0.0.0.0") print $2}'
这将干净地打印网关 IP。(如果没有awk,linux 脚本会怎样?)
如果您想从接口文件中获取网关: