使用以下命令手动将我的 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/;//'
删除尾随的分号。