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

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

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

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

  • Поддельный генератор IP-адресов
  • Как добавить статический маршрут в Virtual Guest для доступа к сети хоста?
  • Настройка Gentoo на VM IP вручную
  • Маркировка / слияние нескольких сетевых адресов
  • Статический маршрут в Centos 6
  • Почему FTP не работает через мой туннель ssh?
  • Кто-нибудь использует Netem больше? Альтернативы?
  • Каковы значения префикса интерфейса в ifconfig?
  • 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 
    Linux и Unix - лучшая ОС в мире.