Как получить вывод в формате Интерфейс: IP-адрес из ifconfig на Mac

Я пытаюсь получить следующий форматированный вывод из 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}'

Спасибо!


person Frank    schedule 24.08.2011    source источник
comment
На самом деле это не ответ на ваш вопрос, но, тем не менее, он может вам помочь. Вы знаете ipconfig? Попробуйте, например, ipconfig getifaddr en1.   -  person ChrisJ    schedule 25.08.2011
comment
Доступен ли ipconfig на компьютерах Mac?   -  person Jens    schedule 29.08.2011
comment
@Jens откройте терминал и проверьте   -  person slayton    schedule 18.10.2012
comment
@slayton Я спрашивал, потому что у меня не Mac, а система FreeBSD, и я знаю ipconfig только как утилиту Windows.   -  person Jens    schedule 18.10.2012


Ответы (2)


Это работает на FreeBSD, которая лежит в основе Apple :-)

#!/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
person Jens    schedule 26.08.2011
comment
@Фрэнк: Хорошо. Следующий шаг — проголосовать за (щелкнув треугольник над числом слева) и/или принять ответ, щелкнув значок галочки под нижним треугольником. - person Jens; 29.08.2011
comment
Простите за опоздание. Я принял ответ и хотел бы проголосовать за него, но пока не имею достаточной репутации. - person Frank; 10.09.2011

В системах 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
person KeshV    schedule 04.09.2013