linux shell获取所有网卡的ip_v4地址方法

本文对比了两种从网络接口获取IP地址的Shell脚本方案。第一种方案使用`ls /sys/class/net`来枚举网络接口,而第二种方案通过`ifconfig`命令的输出进行解析,能更全面地处理多IP地址的情况,特别是在一张网卡配置了多个地址的场景下,第二种方案的表现更为优越。

请对比两种方案:

方案一:

infs=(`ls /sys/class/net`)
for i in ${infs[*]}
do
    get_ip=`ifconfig ${i} 2> /dev/null | awk '/inet/ {print $2}' | cut -f2 -d ":" |awk 'NR==1 {print $1}'`
    echo ${get_ip}
done

方案二:

for i in `ifconfig | grep -o ^[a-z0-9:]*`;
do  
    get_ip=`ifconfig ${i%*:} 2> /dev/null | awk '/inet/ {print $2}' | cut -f2 -d ":" |awk 'NR==1 {print $1}'`
    echo ${get_ip}
done

很多人会用第一种方案,其实第二种方案更全面一些~~

差别在于当有一张网卡配多个地址的时候,第一种方案无法列举出所有的IP。

看下面差别:

ls /sys/class/net 无法获取lo:1

ifconfig | grep -o ^[a-z0-9:]* 可以获取lo:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值