【问题标题】:Determine internet IP address in shell?在shell中确定互联网IP地址?
【发布时间】:2017-07-14 10:51:32
【问题描述】:

我正在尝试将我的互联网 IP 地址保存到 shell 中的变量中。

我试过了

ip=`host 'localhost' | awk '{print $4}'`

但那会返回

127.0.0.1

如何将互联网 IP 地址保存到 shell 中的变量中?

【问题讨论】:

  • 什么IP?您的 WAN(外部)IP?
  • 我本地互联网的 ip,而不是 77.somethingother
  • 但是 192.somethingelse
  • 只有本地wifi
  • 试试ifconfig | grep inet | cut -d ' ' -f 2 | cut -d ':' -f 2

标签: linux macos shell


【解决方案1】:

要获取所有本地接口的 IP 地址,请尝试使用 ifconfig,例如:

$ ifconfig | awk '/inet / { print $2 }'
127.0.0.1
10.8.0.34
192.168.1.2

在这里您可以看到我有 3 个地址(环回适配器、以太网和 wifi)。如果你知道你的本地网络地址有192.* 形式,你只能得到一个:

$ ifconfig | awk '/inet *192/ { print $2 }'
192.168.1.2

并将其存储到变量中:

ip=$(ifconfig | awk '/inet *192/ { print $2 }')

或者,将所有地址存储在 bash 数组中:

$ ips=($(ifconfig | awk '/inet / { print $2 }'))
$ printf "ip: %s\n" "${ips[@]}"
ip: 127.0.0.1
ip: 10.8.0.34
ip: 192.168.1.2

要获取 IPv6 地址,请查找 inet6 而不是 inet

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2019-05-06
    • 2018-10-11
    • 2014-04-22
    • 1970-01-01
    相关资源
    最近更新 更多