LINUX.ORG.RU

проверка маршрута

 ,


0

1

здравствуйте прошу помощи в составлении скриптика, который бы проверял наличие маршрута и, ежели тот отсутствует, то задавал бы его. использоваться будет на машине с Debian 9. маршрут таков:

route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.4.0.1

test $(ip r s | grep -c '^192\.168\.0\.0/24 via 10\.4\.0\.1') -eq 0 && ip r a 192.168.0.0/24 via 10.4.0.1
Deleted
()

По простому тут уже дали, но так не спортивно. Вот, чтобы препод зауважал:

#!/usr/bin/env bash

net=192.168.0.0
netmask=255.255.255.0
gw=10.4.0.1

hex2ipv4() {
        local i v
        for i; do
                v=${!i}
                printf -v $i "%d.%d.%d.%d" 0x${v:6} 0x${v:4:2} 0x${v:2:2} 0x${v:0:2}
        done
}

{
read Others
while read Iface Destination Gateway Flags RefCnt Use Metric Mask Others; do
        hex2ipv4 Destination Mask Gateway
        [[ $Destination == $net && $Mask == $netmask && $Gateway == $gw ]] && exit 0
done
} < /proc/net/route

route add -net $net netmask $netmask gw $gw

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от zolden

и защиту от 'via 10.4.0.123'

Я так думаю, что защищать вроде и не надо. Если вместо точки будет цифра, то получится чёрт-те что, а не ipv4, а «ip» не бакрезольвит для имён.

vodz ★★★★★
()

это динамический интерфейс ? почем4у бы не поместить это в скрипты запуска этог интерфейса

Jopich1
()

всё отлично работает, всем спасибо!

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