我目前正在研究这个
IFTUN="$(ifconfig tun)" IPADD=${IFTUN:106:13} echo $IPADD
但如果 IP 地址的大小发生变化,此方法将不再起作用。
inet addr:1.2.3.4 P-t-P:1.2.3.4 Mask:255.255.254.0 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:1151 errors:0 dropped:0 overruns:0 frame:0
因此,我想要的是一种从 ifconfig 获取 IP 的方法,无论字符数是“1.2.3.4”还是“111.22.3.44”,甚至是“111.222.333.444”
答案1
为了获取你的 IP 地址,Ifconfig
你可以使用以下命令:
echo `ifconfig tun0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'`
此命令将获取的 IP 地址tun0
。
答案2
使用已弃用ip
的命令代替ifconfig
。
ipAddr=$( ip a s eth0 | awk '/inet.*brd/ {print $2}' )
示例输出:172.16.2.136/16
如果您不想包含 CIDR,请使用以下命令:
ipAddr=$( ip a s eth0 | awk '/inet.*brd/ {print $2}' | awk -F'/' '{print $1}' )
示例输出:172.16.2.136
答案3
我不会使用 ifconfig,因为至少在某些发行版中它被 ip 取代。
如果你知道你的界面你可以这样做:
ip 地址 |grep eth0 |grep inet |awk'{打印 $2}'
它还会给你一个面具,你可以像这样剪掉它。
ip 地址 |grep eth0 |grep inet |awk'{打印 $2}'|cut -d“/”-f 1
我假设您使用 bash 编写脚本。如果您使用其他语言,您也可以获取主机名并查找其 IP。