Определите интерфейс ethN, содержащий определенный октет в CentOS

299
Inian

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

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

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

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

1 ответ на вопрос

3
Eric Renouf

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

ip addr show | awk -F: '/^[0-9]/ /inet .*\.112/ ' 

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

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

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

Спасибо за ответ. Возможно, вы захотите еще раз проверить разделитель поля ввода, я думаю, он не завершен. Вы можете это исправить, пожалуйста? Inian 7 лет назад 0
@Inian Упс, извините за плохую копировальную пасту, я исправил пропущенную двоеточие. FWIW это делается на блоке Centos 6, ваш вывод может быть немного другим, если у вас есть другая версия Eric Renouf 7 лет назад 0
Да, это работает сейчас. Я смог исправить это сам, но моей самой большой проблемой помимо этого было бы, если это правильный подход (анализ выходных данных `ifconfig`) для определения интерфейса для IP? Будет ли это эффективно? Inian 7 лет назад 0
@ В общем, кроме рекомендации переключиться на «ip» вместо «ifconfig», я не думаю, что это философски плохой подход, и я ожидаю, что он действительно будет эффективным. Конечно, в зависимости от того, что вы пытаетесь сделать, могут быть и другие способы достижения этой цели. Eric Renouf 7 лет назад 1