Linux

任何人都可以只使用 netstat -rn、while、read 和 cut 命令來獲取預設 IP 嗎?

  • March 19, 2021

可以想像,我應該只使用這些命令來獲取我的虛擬機的預設 IP。netstat -rn 給出以下輸出

Kernel IP routing table
Destination   Gateway        Genmask ...
0.0.0.0       138.248.123.23 ....

我需要獲取 138.248.123.23(這是一個虛構的 IP),但我不能使用 awk 或 sed。我可以使用 while 和 read 獲得輸出的第三行,但我無法使用 cut 命令提取它。我試過netstat -rn | cut -f2 -d$'\t'了,但是沒有用…

為什麼不能使用 awk 和 sed?

這是另一種解決方案:

grep ^0.0.0.0 | tr -s " " | cut -f2 -d" "

-s選項將空格字元串轉換為單個空格。

不確定我是否跟隨但這個?

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 enp0s25
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlp3s0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 enp0s25
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp3s0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr1
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0

# netstat -rn | while read dest gw rest ; do [[ "${dest}" == "0.0.0.0" ]] && echo "${gw}" ; done
192.168.1.1
192.168.1.1

引用自:https://unix.stackexchange.com/questions/639991