[GELÖST] - Automatisches erkennen der INetver. und gateway

Fragen, Probleme ... die sonst nirgends passen ...
kakao
IPC Anfänger
Beiträge: 51
Registriert: Mo 5. Mär 2012, 15:39
Kontaktdaten:

[GELÖST] - Automatisches erkennen der INetver. und gateway

Beitrag von kakao »

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
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Automatisches erkenne meiner I-netverbindungen

Beitrag von feissmaik »

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 musst nicht kämpfen um zu siegen
kakao
IPC Anfänger
Beiträge: 51
Registriert: Mo 5. Mär 2012, 15:39
Kontaktdaten:

Re: Automatisches erkenne meiner I-netverbindungen

Beitrag von kakao »

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
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
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
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Automatisches erkenne meiner I-netverbindungen

Beitrag von feissmaik »

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
kakao
IPC Anfänger
Beiträge: 51
Registriert: Mo 5. Mär 2012, 15:39
Kontaktdaten:

Re: Automatisches erkenne meiner I-netverbindungen

Beitrag von kakao »

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
feissmaik
Entwickler Team
Beiträge: 2576
Registriert: So 17. Apr 2011, 11:39
Been thanked: 1 time
Kontaktdaten:

Re: Automatisches erkenne meiner I-netverbindungen

Beitrag von feissmaik »

...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..

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
kakao
IPC Anfänger
Beiträge: 51
Registriert: Mo 5. Mär 2012, 15:39
Kontaktdaten:

Re: Automatisches erkennen der INetver. und gateway ändern

Beitrag von kakao »

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
kakao
IPC Anfänger
Beiträge: 51
Registriert: Mo 5. Mär 2012, 15:39
Kontaktdaten:

Re: Automatisches erkennen der INetver. und gateway ändern

Beitrag von kakao »

Bekomme diese Meldung:
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'

Was habe ich falsch gemacht?

mfg
feissmaik
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

Beitrag von feissmaik »

Probiers mal hiermit:

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
bash -x </dsl.sh> .. ist aber auch falsch. wenn dann: bash -x dsl.sh
Du musst nicht kämpfen um zu siegen
kakao
IPC Anfänger
Beiträge: 51
Registriert: Mo 5. Mär 2012, 15:39
Kontaktdaten:

Re: Automatisches erkennen der INetver. und gateway ändern

Beitrag von kakao »

Vielen Dank scheint zu laufen :)
Werde es heute Nacht testen,jetzt würde mir meine Holde Stress machen.

Nochmals vielen Dank!!
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste