我尝试使用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
的示例输出可以是found here.
答案 0 :(得分:4)
您可以使用此awk脚本:
awk '/inet / && $2 != "127.0.0.1"{print $2}' <(ifconfig)
答案 1 :(得分:2)
在计算机上获取当前使用的IP的最佳方法。
ip route get 8.8.8.8 | awk '{print $NF;exit}'
192.168.1.30
无论您拥有什么类型的界面,或者您拥有多个界面,它都能正常工作 它测试如何获取公共IP,然后提供出去所需的IP地址。
在此信息中查看更多信息:Linux bash script to extract IP address
答案 2 :(得分:0)
我建议您使用ip
命令代替ifconfig
,ip
是“未来”,与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地址。
答案 3 :(得分:0)
如果您不介意安装某些内容和/或已有节点,请尝试sindresorhus/internal-ip
$ npm install --global internal-ip
$ internal-ip
192.168.0.2
Pro:跨平台
注意:我知道它不是bash而且它不使用ifconfig
,但我在这里寻找一个可以在任何地方使用的通用工具,也许它可以帮助其他人。