[GELÖST] - Automatisches erkennen der INetver. und gateway
[GELÖST] - Automatisches erkennen der INetver. und gateway
Hi wollte mal Fragen ob es eine Lösungsmöglichkeit für mein Anliegen gibt.
Und zwar habe ich in meinen Netzwerk zwei verschiedene I-Netanbindungen,zum einen
Skydsl und desweiteren UMTS.
Es kommt leider manchmal vor das Sky-Dsl nicht richtig funktioniert bzw. das ich meinen UMTS-Stick mal ausser Haus verwende.
Ich habe das immer so gelöst wenn ich den Stick gebraucht habe das ich ebend per Hand auf meinen DebianServer den Gateway
geändert habe.
Ist ja alles soweit kein Prob,aber manchmal kam es vor wenn ich nicht @home war das skydsl zickte und natürlich dann nichts mehr ging.
Gibt es eine Lösung wo erkannt wird welche Verbindung Aktiv ist und auf diese gewechselt wird?
mfg
Und zwar habe ich in meinen Netzwerk zwei verschiedene I-Netanbindungen,zum einen
Skydsl und desweiteren UMTS.
Es kommt leider manchmal vor das Sky-Dsl nicht richtig funktioniert bzw. das ich meinen UMTS-Stick mal ausser Haus verwende.
Ich habe das immer so gelöst wenn ich den Stick gebraucht habe das ich ebend per Hand auf meinen DebianServer den Gateway
geändert habe.
Ist ja alles soweit kein Prob,aber manchmal kam es vor wenn ich nicht @home war das skydsl zickte und natürlich dann nichts mehr ging.
Gibt es eine Lösung wo erkannt wird welche Verbindung Aktiv ist und auf diese gewechselt wird?
mfg
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Automatisches erkenne meiner I-netverbindungen
Dazu müsste man erstmal wissen wie dein Netzwerk aufgebaut ist und was dir wichtig ist...
Du hast also 2 Router? Einmal für SkyDSL und einmal für UMTS?
Und der DebianServer ist der, der bei Ausfall von SkyDSL automatisch sein Gateway auf den UMTS Router ändern soll?
Du hast also 2 Router? Einmal für SkyDSL und einmal für UMTS?
Und der DebianServer ist der, der bei Ausfall von SkyDSL automatisch sein Gateway auf den UMTS Router ändern soll?
Du musst nicht kämpfen um zu siegen
Re: Automatisches erkenne meiner I-netverbindungen
Mein Netzwerk ist rein Static aufgebaut,die restlichen Pc´s bleiben einfach auf dem Skdslrouter,mir geht es nur um den Debian,der sollte erkennen wenn was ausfällt.
Habe 2 Router im gleichen Netzwerkbereich läuft alles top.
hier mein config
Wechsle da einfach beim Gateway die Ip aus das ist alles,aber schön wäre wenn e eine Möglichkeit gibt das der Server das erkennen würde,alleine des Cs wegen.
mfg
und vielen Dank im voraus
mfg
Habe 2 Router im gleichen Netzwerkbereich läuft alles top.
hier mein config
Spoiler
Show
Code: Alles auswählen
IP des Servers 192.168.3
Der Gateway über skyDsl ist 192.168.1.
über umts benutze ich Gateway 192.168.1.11
Standart bei Debian s
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.111
mfg
und vielen Dank im voraus
mfg
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Automatisches erkenne meiner I-netverbindungen
LAN IP Adressen brauchst du nicht unkenntlich machen... Bitte bearbeite den Post und korregier die IPs also bitte ausschreiben sodass man auch deine Konfiguration versteht......
Du musst nicht kämpfen um zu siegen
Re: Automatisches erkenne meiner I-netverbindungen
Sorry aber ich habe nichts weg gelassen dassind die lan IPs steht ja nichts mit xxx sind alle im Berreich von 192.168.1.1 -192.168.1.254
Also Router 1 hat Ip 192.168.1.1
Router 2 192.168.1.11
Mein Debian 192.168.1.10
Mir geht es nur darum das er weiß wo er ins Netz kann.
vielen Dank
Also Router 1 hat Ip 192.168.1.1
Router 2 192.168.1.11
Mein Debian 192.168.1.10
Mir geht es nur darum das er weiß wo er ins Netz kann.
vielen Dank
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Automatisches erkenne meiner I-netverbindungen
...probier es mal mit folgendem script... kann das aber leider nicht testen also kA ob das so bereits funktioniert - fals nicht dann führ es bitte im debug (bash -x <script>) aus und poste die ausgabe
wenn es funktioniert müsste es in /etc/crontab eingetragen werden damit es zb alle 2minuten ausgeführt wird
es pingt die angegebene PINGIP und wenn das nicht funktioniert wechselt es den gateway; wobei es eigentlich so gedacht ist das es auch wieder zum skydsl switchen würde wenn umts ausfällt...
ausserdem kannst du über angabe des parameters "disable" das script abschalten fals du den umts stick mal entwenden solltest (es also auch nicht auf den umts stick switchen kann) beziehungsweise wieder "enablen" wenn du wieder zuhause bist o.ä...
ausserdem schreibt es in ein logfile wenn es den gateway switched und fals das logfile über 512kb gross wird, wird es rotiert... oder wenn du das nicht möchtest kannst du logrotate im script auch auf 0 stellen dann würde das file gelöscht und neu erstellt werden...
beachten musst du aber dass es das netzwerk device neu startet - dh wenn es noch fehlerhaft ist (beim ändern von der "interfaces" datei) könnte es passieren das nichts mehr geht..
wenn es funktioniert müsste es in /etc/crontab eingetragen werden damit es zb alle 2minuten ausgeführt wird
es pingt die angegebene PINGIP und wenn das nicht funktioniert wechselt es den gateway; wobei es eigentlich so gedacht ist das es auch wieder zum skydsl switchen würde wenn umts ausfällt...
ausserdem kannst du über angabe des parameters "disable" das script abschalten fals du den umts stick mal entwenden solltest (es also auch nicht auf den umts stick switchen kann) beziehungsweise wieder "enablen" wenn du wieder zuhause bist o.ä...
ausserdem schreibt es in ein logfile wenn es den gateway switched und fals das logfile über 512kb gross wird, wird es rotiert... oder wenn du das nicht möchtest kannst du logrotate im script auch auf 0 stellen dann würde das file gelöscht und neu erstellt werden...
beachten musst du aber dass es das netzwerk device neu startet - dh wenn es noch fehlerhaft ist (beim ändern von der "interfaces" datei) könnte es passieren das nichts mehr geht..
Code: Alles auswählen
#!/bin/bash
#
# switch between max 2 gateways!
#
declare -A GATEWAY
GATEWAY["SkyDSL"]="192.168.1.1"
GATEWAY["UMTS"]="192.168.1.11"
PreferedGATEWAY="UMTS"
NETWORKdevice="eth0"
PINGIP="8.8.8.8"
PINGtimeout="5"
LogFile="/var/log/GATEWAYchange.log"
_maxlogsize="512"
_logrotate="1"
_lockfile="/tmp/.dontswitch"
#
if [[ -n "$1" -a "$1" = "dis"* ]]; then
touch $_lockfile
echo "Script disabled!"
exit 0
elif [[ -n "$1" -a "$1" = "ena"* ]]; then
rm -f $_lockfile
echo "Script enabled!"
exit 0
fi
[ -f "$_lockfile" ] && exit 0
# check for ping response and if not change /etc/network/interfaces
if [ -z "$(ping -q -W$PINGtimeout -c1 $PINGIP|grep "1 received")" ]; then
CurrentGateway=""; Switch2Gateway=""
for index in ${!GATEWAY[*]}; do
[ -f "/tmp/.$index" ] && CurrentGateway="$index"
done
if [ -n "$CurrentGateway" ]; then
for index in ${!GATEWAY[*]}; do
[ "$index" != "$CurrentGateway" ] && Switch2Gateway="$index"
done
else
Switch2Gateway=$PreferedGATEWAY
fi
num=$(sed -ne '/gateway .*/=' /etc/network/interfaces)
if [ -n "$num" ]; then
num2=$(expr $num - 1)
sed -i -e "$num d" -e "$num2 a gateway $GATEWAY["$Switch2Gateway"]" /etc/network/interfaces
ifdown $NETWORKdevice
ifup $NETWORKdevice
echo "[$(date +"%d/%m/%Y %H:%M:%S")] Switched to GATEWAY -> $GATEWAY["$Switch2Gateway"]"
echo "[$(date +"%d/%m/%Y %H:%M:%S")] Switched to GATEWAY -> $GATEWAY["$Switch2Gateway"]" >> $LogFile
else
echo "[$(date +"%d/%m/%Y %H:%M:%S")] CANT SWITCH to GATEWAY -> $GATEWAY["$Switch2Gateway"]! Missing 'gateway' Line!"
echo "[$(date +"%d/%m/%Y %H:%M:%S")] CANT SWITCH to GATEWAY -> $GATEWAY["$Switch2Gateway"]! Missing 'gateway' Line!" >> $LogFile
fi
else
exit 0
fi
# check size of LogFile
if [ -f "$LogFile" -a "$(stat --printf="%s" $LogFile)" -gt "$_maxlogsize" ]; then
if [ "$_logrotate" == 1 ]; then
echo "rotating log $LogFile"
mv -f $LogFile ${LogFile}.1 >/dev/null 2>&1
else
echo "resetting log $LogFile"
rm -f $LogFile >/dev/null 2>&1
fi
touch $LogFile
fi
exit 0
Du musst nicht kämpfen um zu siegen
Re: Automatisches erkennen der INetver. und gateway ändern
Vielen Dank dafür,du bist genial.
Bin Sonntag abend wieder @home,werde es dann einbauen und gleich testen.
Werde dir dann berichten.
Nochmals vielen Dank!!!
mfg
Bin Sonntag abend wieder @home,werde es dann einbauen und gleich testen.
Werde dir dann berichten.
Nochmals vielen Dank!!!
mfg
Re: Automatisches erkennen der INetver. und gateway ändern
Bekomme diese Meldung:
Was habe ich falsch gemacht?
mfg
Spoiler
Show
Code: Alles auswählen
root@Debin ~ > /etc/dsl.sh
/etc/dsl.sh: Zeile 19: Syntaxfehler im bedingen Ausdruck.
/etc/dsl.sh: Zeile 19: Syntaxfehler beim unerwarteten Wort `-a'
/etc/dsl.sh: Zeile 19: `if [[ -n "$1" -a "$1" = "dis"* ]]; then'
bash -x </dsl.sh>
-bash: Syntaxfehler beim unerwarteten Wort `newline'
mfg
-
- Entwickler Team
- Beiträge: 2576
- Registriert: So 17. Apr 2011, 11:39
- Been thanked: 1 time
- Kontaktdaten:
Re: Automatisches erkennen der INetver. und gateway ändern
Probiers mal hiermit:
bash -x </dsl.sh> .. ist aber auch falsch. wenn dann: bash -x dsl.sh
Code: Alles auswählen
#!/bin/bash
#
# switch between max 2 gateways!
#
declare -A GATEWAY
GATEWAY["SkyDSL"]="192.168.1.1"
GATEWAY["UMTS"]="192.168.1.11"
PreferedGATEWAY="UMTS"
NETWORKdevice="eth0"
PINGIP="8.8.8.8"
PINGtimeout="5"
LogFile="/var/log/GATEWAYchange.log"
_maxlogsize="512"
_logrotate="1"
_lockfile="/tmp/.dontswitch"
#
if [ -n "$1" ]; then
if [[ "$1" = "dis"* ]]; then
touch $_lockfile
echo "Script disabled!"
exit 0
elif [[ "$1" = "ena"* ]]; then
rm -f $_lockfile
echo "Script enabled!"
exit 0
fi
fi
[ -f "$_lockfile" ] && exit 0
# check for ping response and if not change /etc/network/interfaces
if [ -z "$(ping -q -W$PINGtimeout -c1 $PINGIP|grep "1 received")" ]; then
CurrentGateway=""; Switch2Gateway=""
for index in ${!GATEWAY[*]}; do
[ -f "/tmp/.$index" ] && CurrentGateway="$index"
done
if [ -n "$CurrentGateway" ]; then
for index in ${!GATEWAY[*]}; do
[ "$index" != "$CurrentGateway" ] && Switch2Gateway="$index"
done
else
Switch2Gateway=$PreferedGATEWAY
fi
num=$(sed -ne '/gateway .*/=' /etc/network/interfaces)
if [ -n "$num" ]; then
num2=$(expr $num - 1)
sed -i -e "$num d" -e "$num2 a gateway $GATEWAY[$Switch2Gateway]" /etc/network/interfaces
ifdown $NETWORKdevice
ifup $NETWORKdevice
echo "[$(date +"%d/%m/%Y %H:%M:%S")] Switched to GATEWAY -> $GATEWAY[$Switch2Gateway]"
echo "[$(date +"%d/%m/%Y %H:%M:%S")] Switched to GATEWAY -> $GATEWAY[$Switch2Gateway]" >> $LogFile
else
echo "[$(date +"%d/%m/%Y %H:%M:%S")] CANT SWITCH to GATEWAY -> $GATEWAY[$Switch2Gateway]! Missing 'gateway' Line!"
echo "[$(date +"%d/%m/%Y %H:%M:%S")] CANT SWITCH to GATEWAY -> $GATEWAY[$Switch2Gateway]! Missing 'gateway' Line!" >> $LogFile
fi
else
exit 0
fi
# check size of LogFile
if [ -f "$LogFile" -a "$(stat --printf="%s" $LogFile)" -gt "$_maxlogsize" ]; then
if [ "$_logrotate" == 1 ]; then
echo "rotating log $LogFile"
mv -f $LogFile ${LogFile}.1 >/dev/null 2>&1
else
echo "resetting log $LogFile"
rm -f $LogFile >/dev/null 2>&1
fi
touch $LogFile
fi
exit 0
Du musst nicht kämpfen um zu siegen
Re: Automatisches erkennen der INetver. und gateway ändern
Vielen Dank scheint zu laufen
Werde es heute Nacht testen,jetzt würde mir meine Holde Stress machen.
Nochmals vielen Dank!!
Werde es heute Nacht testen,jetzt würde mir meine Holde Stress machen.
Nochmals vielen Dank!!
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste