Seite 2 von 3
Re: [GELÖST] - Automatisches erkennen der INetver. und gatew
Verfasst: Mi 3. Okt 2012, 05:56
von kakao
Konnte es erst jetzt richtig testen,das Script läuft nur er trägt mir bei beim Netzwerk anstatt der IP folgendes ein
Code: Alles auswählen
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
roadcast 192.168.1.255
gateway [UMTS]
Ansonsten läuft es Log wird natürlich auch erstellt.
Code: Alles auswählen
02/10/2012 18:58:11] Switched to GATEWAY -> [UMTS]
[03/10/2012 00:20:03] Switched to GATEWAY -> [UMTS]
[03/10/2012 00:21:04]
bash -x dsl.sh
Code: Alles auswählen
+ declare -A GATEWAY
+ GATEWAY["SkyDSL"]=192.168.1.1
+ GATEWAY["UMTS"]=192.168.1.111
+ PreferedGATEWAY=UMTS
+ NETWORKdevice=eth0
+ PINGIP=8.8.8.8
+ PINGtimeout=5
+ LogFile=/var/log/GATEWAYchange.log
+ _maxlogsize=512
+ _logrotate=1
+ _lockfile=/tmp/.dontswitch
+ '[' -n '' ']'
+ '[' -f /tmp/.dontswitch ']'
++ grep '1 received'
++ ping -q -W5 -c1 8.8.8.8
+ '[' -z '1 packets transmitted, 1 received, 0% packet loss, time 0ms' ']'
+ exit 0
Re: [GELÖST] - Automatisches erkennen der INetver. und gatew
Verfasst: Mi 3. Okt 2012, 10:18
von feissmaik
Achso ja entschuldige da ist noch ein Bug; es müsste nicht " $GATEWAY[$Switch2Gateway] " sein sondern " ${GATEWAY[$Switch2Gateway]} "
Also 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 $Switch2Gateway GATEWAY -> ${GATEWAY[$Switch2Gateway]}"
echo "[$(date +"%d/%m/%Y %H:%M:%S")] Switched to $Switch2Gateway GATEWAY -> ${GATEWAY[$Switch2Gateway]}" >> $LogFile
else
echo "[$(date +"%d/%m/%Y %H:%M:%S")] CANT SWITCH to $Switch2Gateway GATEWAY -> ${GATEWAY[$Switch2Gateway]}! Missing 'gateway' Line!"
echo "[$(date +"%d/%m/%Y %H:%M:%S")] CANT SWITCH to $Switch2Gateway 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
Re: [GELÖST] - Automatisches erkennen der INetver. und gatew
Verfasst: Mi 3. Okt 2012, 17:57
von kakao
Danke für deine Hilfe!!!
Habe jetzt getestet es geht wenn ich den Skydslgateway drinnen habe das er switcht (aber leider erstwenn ich den Server reboote)
Entferne ich UMTS will er immer wieder auf den UMTS umstellen.
Code: Alles auswählen
[03/10/2012 18:28:07] Switched to UMTS GATEWAY -> 192.168.1.111
dann bash ausgeführt bei abgestecktem UMTS
Code: Alles auswählen
+ declare -A GATEWAY
+ GATEWAY["SkyDSL"]=192.168.1.1
+ GATEWAY["UMTS"]=192.168.1.111
+ PreferedGATEWAY=UMTS
+ NETWORKdevice=eth0
+ PINGIP=8.8.8.8
+ PINGtimeout=5
+ LogFile=/var/log/GATEWAYchange.log
+ _maxlogsize=512
+ _logrotate=1
+ _lockfile=/tmp/.dontswitch
+ '[' -n '' ']'
+ '[' -f /tmp/.dontswitch ']'
++ grep '1 received'
++ ping -q -W5 -c1 8.8.8.8
+ '[' -z '' ']'
+ CurrentGateway=
+ Switch2Gateway=
+ for index in '${!GATEWAY[*]}'
+ '[' -f /tmp/.SkyDSL ']'
+ for index in '${!GATEWAY[*]}'
+ '[' -f /tmp/.UMTS ']'
+ '[' -n '' ']'
+ Switch2Gateway=UMTS
++ sed -ne '/gateway .*/=' /etc/network/interfaces
+ num=14
+ '[' -n 14 ']'
++ expr 14 - 1
+ num2=13
+ sed -i -e '14 d' -e '13 a gateway 192.168.1.111' /etc/network/interfaces
+ ifdown eth0
+ ifup eth0
++ date '+%d/%m/%Y %H:%M:%S'
+ echo '[03/10/2012 18:54:55] Switched to UMTS GATEWAY -> 192.168.1.111'
[03/10/2012 18:54:55] Switched to UMTS GATEWAY -> 192.168.1.111
++ date '+%d/%m/%Y %H:%M:%S'
+ echo '[03/10/2012 18:54:55] Switched to UMTS GATEWAY -> 192.168.1.111'
++ stat --printf=%s /var/log/GATEWAYchange.log
+ '[' -f /var/log/GATEWAYchange.log -a 384 -gt 512 ']'
+ exit 0
der Log dazu
Code: Alles auswählen
[03/10/2012 18:56:02] Switched to UMTS GATEWAY -> 192.168.1.111
Sorry wollte dir keine arbeit machen
Re: [GELÖST] - Automatisches erkennen der INetver. und gatew
Verfasst: Mi 3. Okt 2012, 18:10
von feissmaik
Gibts denn jetzt noch ein Problem? Wer daraus nicht so ganz schlau..
Re: Automatisches erkennen der INetver. und gateway
Verfasst: Mi 3. Okt 2012, 22:57
von kakao
Das einzige Problem ist das er nur auf 192.168.11 umschaltet nie auf 192.168.1.1.
Also er switcht nur auf umts nie auf skydsl 192.168.1.
Re: Automatisches erkennen der INetver. und gateway
Verfasst: Mi 3. Okt 2012, 23:14
von feissmaik
Wenn das Script über den UMTS gateway die externe-IP pingen kann gibts da auch kein Grund für das Script da ja anscheint eine Internet Verbindung noch besteht...
Sicher das du das richtig getestet hast?
Re: Automatisches erkennen der INetver. und gateway
Verfasst: Mi 3. Okt 2012, 23:29
von kakao
hast du recht
Habe getestet Netzwerk eingestellt auf skydsl (192.168.1.1 Gateway)
Verbindung getrennt er switcht auf umts
alles ok
Verbindung (Gateway) auf 192.168.11 also Umts,dann trennung
also soll er auf 192.168.1.1 verbinden
er will immer verbinden auf 192.168.11
werde auf donate klickenund was geben,bei dem Service:)
Re: Automatisches erkennen der INetver. und gateway
Verfasst: Mi 3. Okt 2012, 23:44
von feissmaik
Also funktioniert es jetzt so wie es soll oder gibts noch Problem?
Re: Automatisches erkennen der INetver. und gateway
Verfasst: Do 4. Okt 2012, 11:26
von kakao
Es funktioniert,wenn SkyDsl weg ist geht er auf Umts,gibt es auch die Möglichkeit das er wenn UMTS wegfällt wieder auf skydsl zurück geht?
mfg
Re: Automatisches erkennen der INetver. und gateway
Verfasst: Do 4. Okt 2012, 12:08
von feissmaik
Eigentlich sollte er das allerdings nur dann wenn er die externe PINGIP nicht mehr pingen kann...
Wenn er über SkyDSL online ist und PINGIP pingen kann, switched er nicht zum UMTS gateway.
Wenn er über das SkyDSL gateway die PINGIP nicht mehr anpingen kann erst dann switched er zum UMTS gateway...
Wenn dann SkyDSL wieder online ist kann er davon ja nix merken weil weiterhin das UMTS gateway funktioniert. Erst wenn er über das UMTS gateway die PINGIP nicht mehr erreicht, erst dann würde er wieder zum SkyDSL switchen