你可以使用什么命令在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 -r或route的输出中获取系统的默认网关
$ 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}'