3

我正在尝试使用 bash 脚本输出我当前的 IP 地址。我正在努力解决awk以下问题:

/sbin/ifconfig $1 | grep "inet" | awk '$1 == "inet" {gsub(/\/.$/, "", $2); print $2}'

输出:

127.0.0.1
192.168.178.57

我现在有两个问题:首先127.0.0.1是没用,我该如何摆脱它?其次,192.168.178.57是我的 Wi-Fi 连接的 IP 地址。但是,我希望脚本能够获取 Wi-Fi 或以太网的 IP 地址,无论我目前使用的是哪个。/sbin/ifconfig可以在此处找到示例输出。

4

4 回答 4

4

您可以使用此 awk 脚本:

awk '/inet / && $2 != "127.0.0.1"{print $2}' <(ifconfig)
于 2014-11-24T10:12:02.313 回答
1

在计算机上获取当前使用的 IP 的最佳方法。

ip route get 8.8.8.8 | awk '{print $NF;exit}'
192.168.1.30

旧版。不使用!!!!!!

看我对这个帖子的回复: Linux bash script to extract IP address

于 2014-11-24T10:13:33.280 回答
0

我建议您使用ipcommand 而不是ifconfigasip是“未来”,并且与ifconfig.

$ ip addr show dev $(ip route ls|awk '/default/ {print $5}')|grep -Po 'inet \K(\d{1,3}\.?){4}'
10.251.26.9

在这里,这个 oneliner 将使用ip route ls命令并收集接口 ID 的默认接口,并根据它获取该接口的 IP 地址。

这里grep命令使用正则表达式来安全地获取 IP 地址。

于 2014-11-24T10:26:30.860 回答
0

如果您不介意安装某些东西和/或如果您已经有节点,请尝试sindresorhus/internal-ip

$ npm install --global internal-ip
$ internal-ip
192.168.0.2

优点:跨平台

注意:我知道它不是 bash 并且它不使用ifconfig,但我来这里是为了寻找一个可以在任何地方使用的通用工具,也许它可以帮助其他人。

于 2017-01-08T10:26:55.317 回答