Эффективный способ получить Ваш IP-адрес в сценариях оболочки

Контекст: На *отклоняют системы, можно получить IP-адрес машины в сценарии оболочки этот путь:

ifconfig | grep 'inet' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}'

Или это слишком:

ifconfig | grep 'inet' | grep -v '127.0.0.1' | awk '{print $2}' | sed 's/addr://'

Вопрос: был бы более простой, все еще портативный, способ получить IP-адрес для использования в сценарии оболочки?

(мои извинения *BSD и Пользователи Solaris как вышеупомянутая команда не могут работать; я не мог протестировать),

11
задан Eric Platon 3 March 2010 в 02:46
поделиться

3 ответа

вы можете сделать это с помощью всего одной команды awk. Не нужно использовать слишком много труб.

$ ifconfig | awk -F':' '/inet addr/&&!/127.0.0.1/{split($2,_," ");print _[1]}'
12
ответ дан 3 December 2019 в 05:33
поделиться

вы предоставляете прямой интерфейс, тем самым сокращая один grep.

ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}'
5
ответ дан 3 December 2019 в 05:33
поделиться

Посмотрите руководство Beej по сетям , чтобы получить список сокетов, используя простую программу C для распечатки IP-адресов с помощью getaddrinfo ( ...) звонок. Эту простую программу на C можно использовать как часть сценария оболочки, чтобы просто распечатать IP-адреса, доступные для stdout , что было бы проще сделать, а затем полагаться на ifconfig , если вы хотите оставаться переносимым, так как вывод ifconfig может отличаться.

Надеюсь, это поможет, С уважением, Том.

1
ответ дан 3 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: