1

Temat: Nazwy interfejsów w skrypcie

Cześć

Mam na routerze 2 wany - pppoe i 4g, napisałem skrypt wywoływany przez crona do sprawdzania łączności z internetem i podnoszący któryś z wanów jeśli nie ma połączenia (wymaga pakietu iputils-ping)

#!/bin/sh

# Check wan / pppoe-wan
if ! ping -q -c 5 -W 10 -I pppoe-wan google.com > /dev/null; then
   (ifup wan) &
   logger "tester.sh: No internet connectivity on interface wan - bringing up"
fi

# Check wan2 / wwan0
if ! ping -q -c 5 -W 10 -I wwan0 google.com > /dev/null; then
   (ifup wan2) &
   logger "tester.sh: No internet connectivity on interface wan2 - bringing up"
fi

Chciałem to zrobić ładnie w pętli, coś w tym stylu.....

#!/bin/sh

for INTERFACE in wan wan2 wan3 wan4
do 
if ! ping -q -c 5 -W 10 -I $INTERFACE google.com > /dev/null; then
   (ifup $INTERFACE) &
   logger "tester.sh: No internet connectivity on interface $INTERFACE - bringing up"
fi
done

...a tu klops bo ping z parametrem -I nie przyjmuje nazwy wan/wan2/wanN a tylko fizyczne interfejsy pppoe-wan/wwan0,
z kolei ifup przyjmuje wan/wan2/wanN.
Pytanie czy można uzyskać mając np nazwę "wan" nazwę interfejsu fizycznego "pppoe-wan" lub odwrotnie z "pppoe-wan" => "wan" ?

Pozdrawiam
Michał

2

Odp: Nazwy interfejsów w skrypcie

Oczywiście, zrób ifstatus wan i znajdziesz je pod kluczem l3_device. Inaczej też:

. /lib/functions/network.sh
network_get_physdev IFNAME wan
echo $IFNAME

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez m80 2016-11-10 16:52:18)

Odp: Nazwy interfejsów w skrypcie

Dziękuję Cezary
Skorzystałem z ifstatus bo drugi sposób wypisuje Permission denied

#!/bin/sh

for IF_NAME in wan wan2
do
   IF_DEVICE=`ifstatus $IF_NAME | grep l3_device | cut -d'"' -f4`

   if ! ping -q -c 5 -W 10 -I $IF_DEVICE google.com > /dev/null; then
        (ifup $IF_NAME) &
        logger "tester.sh: No internet connectivity on interface $IF_NAME - bringing up"
   fi
done