• 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!!
 

TeXpert

Guru
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.
 
OP
F

fiderallalla

Newbie
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:
 

TeXpert

Guru
naja, als diese Transferleistung :) zusätzlich zum add noch ein del hab ich Dir schon zugetraut....
 
Oben