• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Shell Script zum Wechsel des default Gateways

N'abend zusammen,
ich habe in folgendem folgenden Beitrag ein php-Script gepostet:

http://www.linux-club.de/viewtopic.php?p=218507#218507

Es pingt einen Host an, und falls der nicht da ist wird davon ausgegangen dass der Gateway nicht da ist, und somit wird ein anderer/nächster IP-Eintrag als default Gateway eingerichtet.

Erklärt sich möglicherweise Jemand bereit dieses Script bzw. dessen Funktionsweise zu meiner/unserer Weiterbildung in Sachen Shellscripting in ein Shellscript umzusetzten? Wäre super!!
 
an sich solltest Du das auch hinbekommen ;) die Bash arbeitet auch mit Backticks...

aber wir wollen heute mal nicht so sein
Code:
#! /bin/bash

## alle Gateways aufsammeln
defaultgateway=127.0.0.1
fallbackgateways=( 192.168.1.1 192.168.2.1 ) ## beliebig viele

## test defaultgateway
if [[ -z "$(ping -q -w 4 $defaultgateway | grep -E '[^0-9]+0\ received')" ]] 
then
  echo "alles bestens"
  exit 0
fi

## test fallback
for gateway in ${fallbackgateways[@]}
do
  if [[ -z "$(ping -q -w 4 $gateway | grep -E '[^0-9]+0\ received')" ]] 
  then
    ## hier kein echo sondern die routing-Tabellen manipulieren
    echo "route add default gw $gateway"
    exit 0
  fi
done

## fehlerhaftes Ende
echo "kein passendes Gateway"
exit 1

den Syslog hab ich weggelassen -> man logger hilft weiter, evtl. noch einbauen.
 
Hallo TeXpert,

vielen dank, das sieht schon super aus. Bei dieser Lösung wird jedoch nicht zwischen den gateways geswitched sondern jedesmal der andere Gateway zur Routing Tabelle hinzugefügt - eigentlich müsste der zuvor bestehende Gateway mit "route del" wieder deregistriert werden.

Das ist es zumindest, was ich schon des Öfteren gelesen habe: Als default gw wird immer der erste Eintrag genommen, da es ja nur einen _default_ gw geben kann. Alle weiteren Einträge würden einfach übersehen werden.

Nun habe ich doch noch mal ein bisserl herumgetestet, mit dem Ergebnis: Ich kann bei Systemstart einfach einen weiteren Defaultgateway registrieren -> wenn der Gateway nicht erreichbar ist, wird über den nächsten ins Internet gerouted. Das ist es doch was ich wollte, merkwürdigerweise wird oft geschrieben es ginge nicht :roll:
 
Oben