Linux
任何人都可以只使用 netstat -rn、while、read 和 cut 命令來獲取預設 IP 嗎?
可以想像,我應該只使用這些命令來獲取我的虛擬機的預設 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