生产中常用的获取IP地址方法的总结
从ifconfig命令的结果中筛选出除了lo网卡之外的所有IPv4地址
centos7
(1)ifconfig | awk '/inet / && !($2 ~ /^127/){print $2}'
# awk默认按行读取,加上输入记录分隔符BEGIN{RS=""}就会按段落读取
# RS:Record separator,输入的记录分隔符,默认为换行符
(2)ifconfig | awk 'BEGIN{RS=""}!/^lo:/{print $6}'
(3)ifconfig | awk 'BEGIN{RS="";FS="\n"}!/lo/{$0=$2;FS=" ";$0=$0;print $2}'
centos6
(1)/sbin/ifconfig | awk -F'[ :]+' 'NR==2{print $4}' # [ :]+ 以空格或冒号分割,并重复多次
(2)/sbin/ifconfig | grep "inet addr"|awk -F'[ :]+' '{print $4}'
(3)/sbin/ifconfig | sed -rn 's/.*inet addr:(.*) Bcast:.*$/\1/p'
(4)/sbin/ifconfig | grep "inet addr"|grep -oP '(\d+\.){3}(\d)'
(5)/sbin/ifconfig | grep "inet addr"|awk '{split($2,array,":");print array[2];exit}'
不受系统影响
# 方法1
/sbin/ifconfig|grep -oP '\b10.(\d+\.){2}(([0-9]{1,2})|1([0-9]){2}|2([0-5][0-4]))\b'|head -n1
# 方法2
$ hostname -I