Проверьте список IP-адресов в таблице маршрутизации и покажите, к какому gw / dev

У меня есть длинный (ish) набор правил в моей таблице маршрутизации и список ipадресов. Я ищу, чтобы получить результат, такой как CSV-данные, причем первый столбец является ip-адресами из исходного списка, а второй столбец является шлюзом, который будет использоваться для подключения к этому IP-адресу на основе правил, находящихся в настоящее время в таблице маршрутизации , а третий столбец – это устройство, которое будет использоваться для соединения.

Я вкратце подумал о том, чтобы собрать сценарий, чтобы получить данные маршрутизации с route -n и сделать это, но частично, выработав функцию для выполнения математики подсети, я не мог не думать о том, что это конкретное колесо уже было изобретено и где-то там.

Кто-нибудь знает, какие команды могут делать то, что мне нужно?

  • Порт малины Pi, перенаправляющий на неправильный локальный IP-адрес
  • Каково первое событие / файл / журнал в Linux, который появляется / изменяется при загрузке, сигнализируя о том, что сеть работает?
  • Локальный порт недоступен с открытым IP-адресом
  • Как узнать, включена ли поддержка многоадресной рассылки IP
  • Помогите понять интерфейсы в Backtrack
  • IPv4-локальный адрес в Linux
  • туннель tcp внутри локальной сети с использованием iptables и моста
  • Как перенаправить конкретные адреса через туннель?
  • One Solution collect form web for “Проверьте список IP-адресов в таблице маршрутизации и покажите, к какому gw / dev”

    Вы можете использовать ip route get чтобы выяснить, как ваша машина будет маршрутизироваться на IP-адрес. Поэтому, если у вас есть список IP-адресов в файле, по одному на строку, которую вы могли бы сделать

     while read -r addr; do gw="$(ip route get "$addr" | awk '/via/ {print $3}')" if [[ -z $gw ]]; then printf 'No route for %s\n' "$addr" >&2 else printf '%s,%s\n' "$addr" "$gw" fi done < ip_list 

    К сожалению, я забыл включить dev для вас, так что вот решение для этого

     while read -r addr; do ip route get "$addr" | awk -va="$addr" '/via/ {print a "," $3 "," $5} $2 == "dev" {print a ",," $3}' done < ip_list 
    Interesting Posts

    `sed: -e выражение # 1, char 4: неизвестная команда:` но окончательные строки в порядке

    Есть ли способ дать снегу на мой Linux-джеткот?

    восстановление файлов с HSF + USB External HD, тестирование на CentOS 7 для диагностики

    Как отправить почту с удаленного SMTP-хоста?

    Импорт априорной ОС zsh в Манджаро

    Выяснение несовместимости coreutils между альпийским и «нормальным» Linux (например, Ubuntu)

    Слишком большой кеш вызывает диски для измельчения, ввода / вывода

    Как найти устройство, к которому подключен USB-узел в операционной системе Linux?

    Поиск файлов на основе имени префикса каталога и копирования в каталог

    как установить этот диск?

    Что такого особенного в отношении разрешения Linux 004?

    Есть ли способ установить две папки в одну точку монтирования, чтобы зеркалировать папки?

    как добавить файлы из папки в архив вместо самих папок?

    Нужен скрипт: последние JPEG-файлы для видео, а затем удалите старые JPEG-файлы

    Как настроить Apache для обслуживания https?

    Linux и Unix - лучшая ОС в мире.