如何从Mac上的ifconfig获得格式为“接口:IP地址”的输出

4
我将尝试从ifconfig中获取以下格式化输出:

我正在尝试从ifconfig中获取以下格式化输出:

en0: 10.52.30.105
en1: 10.52.164.63

我至少已经能够通过以下命令得到只包含IP地址(剔除本地主机)的结果,但这对我的要求不够:

ifconfig  | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'

谢谢!


2
这并不是您问题的真正答案,但却可能对您有所帮助。您知道 ipconfig 吗?例如尝试一下 ipconfig getifaddr en1 - ChrisJ
在 Mac 上是否有 ipconfig 命令? - Jens
@Jens 打开终端并检查。 - slayton
@slayton 我问这个问题是因为我没有Mac,而是使用FreeBSD系统,并且只知道ipconfig作为Windows实用程序。 - Jens
2个回答

7
这适用于FreeBSD操作系统,它是苹果操作系统的核心部分 :-)
#!/bin/sh
for i in $(ifconfig -l); do
   case $i in
   (lo0)
      ;;
   (*)
      set -- $(ifconfig $i | grep "inet [1-9]")
      if test $# -gt 1; then
         echo $i: $2
      fi
   esac
done

@Frank:很好。下一步是投票(点击左侧数字上方的三角形)和/或通过点击下方三角形下面的勾号“接受”答案。 - Jens
抱歉耽搁了。我已经接受了答案,很想给它投票支持,但是我的“声望”还不够。 - Frank

0
在Debian/RHEL系统中,您可以执行以下操作---
#!/bin/sh
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

echo "Interface: IP : MASK : BROADCAST : HWADDR"

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

for i in $(ifconfig -a| grep -v ^$| grep ^[a-z*] | awk '{print $1}')

do

     case $i in 

           (lo)
                   ;;

           (*)
         ip=`(/sbin/ifconfig $i | awk /'inet addr/ {print $2}' | cut -f2 -d":" )`
         bcast=`(/sbin/ifconfig $i | awk /'Bcast/ {print $3}' | cut -f2 -d":" )`
         mask=`(/sbin/ifconfig $i | awk /'inet addr/ {print $4}' | cut -f2 -d":" )`
         hwaddr=`(/sbin/ifconfig $i | awk /'HWaddr/ {print $4,$5}' | cut -f2 -d" " )`

         if [ -z $ip ]; then
            ip="NA"
         fi

         if [ -z $bcast ]; then
           bcast="NA"
         fi

         if [ -z $mask ]; then
           mask="NA"
         fi

         if [ -z $hwaddr ]; then
           hwaddr="NA"
         fi

            echo $i: $ip : $mask : $bcast : $hwaddr
            ;;

    esac
done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接