获取wifi网关的IP?

获取wifi网关的IP?

使用以下命令手动将我的 wifi 接口连接到接入点后:

iwconfig $wifi essid "$1"
dhclient $wifi
# ... $wifi = wlan3

我发现我需要运行:

route add default gw 192.168.12.1 $wifi

真正让它发挥作用。我碰巧知道这192.168.12.1是这里接入点的 IP,但我需要一种编程方式来确定连接后的情况。

我发现的最接近的是运行,route -n其中包括以下行:

...
192.168.12.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan3

有人告诉我,在192.168.12.0这里我不能自动假设192.168.12.1最后一个数字可能不同。

有谁知道我可以通过编程方式到达192.168.12.1这里吗?


更新:我找到了一个名为/var/lib/dhcp/dhclient.wlan3.leases.当我grep查看接入点 IP 时,我看到它多次列出。我仍然不确定哪个选项是最好解析的。

结果cat /var/lib/dhcp/dhclient.wlan3.leases | grep 192.168.12.1

  fixed-address 192.168.12.120;
  option routers 192.168.12.1;
  option dhcp-server-identifier 192.168.12.1;
  option domain-name-servers 192.168.12.1;
  fixed-address 192.168.12.120;
  option routers 192.168.12.1;
  option domain-name-servers 192.168.12.1;
  option dhcp-server-identifier 192.168.12.1;

更新#2:使用我从未运行过route add ...但运行过列出的第一个命令的另一台设备。我发现 dhclient 租赁文件不存在。也许是route创建这个文件的命令?

答案1

您可以使用以下命令来打印网关:

ip route show | awk '/default/ { print $3 }'

或者

netstat -n -r | awk '/UG/ { print $2 }'

或者

netstat -n -r | grep 'UG\|*wlan3$' | awk '{print $2}'

答案2

就像是:

grep routers /var/lib/dhclient/dhclient-eth0.leases |sort -u |cut -d ' ' -f 5 |sed -e 's/;//'

将生成所需的IP。

sort -u给出一个独特的行列表,例如option routers 192.168.25.1;

cut -d ' ' -f 5用空格分割该行并给出字段 5,192.168.25.1 然后sed -e 's/;//'删除尾随的分号。

相关内容