3

У меня есть особая необходимость определить, к какому интерфейсу принадлежит часть октета (например, xx.xx.xx.112) на компьютере CentOS

Моя первоначальная идея состояла в том, чтобы сбросить вывод ifconfig и разобрать его вручную, чтобы определить соответствующий интерфейс. Это правильный подход или лучший способ сделать это?

Моя грубая попытка была бы что-то вроде ниже в GNU grep ,

ifconfig | grep -B1 -E '\.112' | grep -oP 'e\w+:'

1 ответ1

3

Я думаю, что awk ответ может быть немного быстрее, так как ему не понадобятся дополнительные подоболочки:

ip addr show | awk -F: '/^[0-9]/ {dev=$2} /inet .*\.112/ {print dev; exit}'

Другая возможность, если вы знаете адрес, который будет перенаправлен через интерфейс, например, если предположить, что по адресу .1 вы можете сделать шлюз.

ip route get a.b.c.1 | cut -f3 -d' '

В общем, ip - это более новая команда, которая должна заменить ifconfig , хотя это уже давно верно и ifconfig еще не ушло, но посмотрите этот вопрос о сбое сервера по этой теме.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .