LINUX.ORG.RU

Адрес интерфейса


0

0

Ребят, помогите пожалуйста c коротеньким шелл-скриптом. Нужно сделать так, чтобы он выдал ТОЛЬКО ip адрес интересующего интерфейса(например eth0 или ppp0). На шелле непойму как сделать, а на питоне хрень какая-то выходит. Заране большое спасибо за помощь!

Если я правильно понял:

/sbin/ifconfig eth0 | grep -E -o "inet addr:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | sed 's@inet addr:@@1'

ale ★★
()
Ответ на: комментарий от ale

Зачем же так сложно?

ifconfig eth0 | grep "inet addr" | sed 's/inet addr://' | sh -c 'read a b c; echo $a'

Хоть и не короче, но идейно проще: не надо знать про ренулярные выразения и про ключи для grep

anonymous
()
Ответ на: комментарий от anonymous

Хотя не, еще и короче в полтора раза

anonymous
()
Ответ на: комментарий от sdio

ужал свой вариант :)

ifconfig eth0 | grep "inet addr:" | sh -c 'IFS=": " read a b c d; echo $c'

всего на 9 символов длиннее чем с awk

anonymous
()

а если на интерфейсе несколько IP адресов ? типа такого: seb@seb:~$ ip ad sh dev eth0 | grep inet inet 169.254.108.12/16 brd 169.254.255.255 scope link eth0 inet 172.31.0.2/24 brd 172.31.0.255 scope global eth0 inet6 fe80::204:61ff:fe7c:a66/64 scope link =)

Eshkin_kot ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.