首页 文章
取消

shell获取本机IP

#!/bin/sh
# 获取本机IP,如果是多网卡多IP,则ip之间以","分隔
ip=''
ipAddr=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
ipArray=(`echo $ipAddr | tr '\n' ' '`)
ipNum=${#ipArray[@]}
if [ $ipNum -eq 1 ]
then
    ip=${ipArray[0]}
elif [ $ipNum -gt 1 ]
then
    for i in ${ipArray[@]}
    do
        if [ -n "$ip" ]
        then
            ip=''$ip','$i'';
        else
            ip=$i;
        fi
    done
fi

命令解释:

  • ifconfig -a 返回本机所有ip信息

  • grep inet 截取包含ip的行

  • grep -v 127.0.0.1 去掉本地指向的那行

  • grep -v inet6 去掉包含inet6的行

  • awk { print $2} $2 表示默认以空格分割的第二组 同理 $1表示第一组

  • tr -d “addr:” 删除"addr:"这个字符串

Reference

Linux - Shell 脚本中获取本机 ip 地址方法