如何在Linux中find网关IP地址

你可以使用什么命令在Linux中查找eth0的网关IP地址(即家庭路由器地址)?

我需要从命令行应用程序获取IP地址以在shell脚本中使用。

只打印默认的gw IP:

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

在所有接口上打印路由信息:

 route -n 

要么

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

是我的项目:)

您可以从netstat -rroute的输出中获取系统的默认网关

 $ 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。

route -n或netstat -rn的输出,并search目的地0.0.0.0。

我更喜欢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}' 

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

这将干净地打印网关IP。 (如果没有awk, linux脚本会是什么?)

如果您想从interfaces文件中获取网关,请执行以下操作:

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

我的单行命令获取默认网关IP地址:

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