[gelöst] Prozessrestartscript falls IP-Change

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
nordic
Beiträge: 1
Registriert: 01.04.2007 16:57:36

[gelöst] Prozessrestartscript falls IP-Change

Beitrag von nordic » 01.04.2007 17:04:17

Hi,
ich habe folgendes geplant:
- Ein Shellscript was im Falle eines IP-Wechsels 2 Prozesse killt und sie neu startet

Geschafft habe ich bisher folgendes:
Killen/Neustarten der Prozesse:

Code: Alles auswählen

kill -9 $(pidof ./tmu /internet /game_settings=MatchSettings/blpublic.txt /dedicated_cfg=bl_cfg.txt)
kill -9 $(pidof php aseco.php TMNPublic)
sleep 3s
cd /tmu/GameData/Cache
rm -rf *
cd /tmu
sh bigs.sh
sleep 3s 
cd /tmu/AsecoPublic
sh Aseco.sh
Aktuelle IP auslesen:

Code: Alles auswählen

ip_cur=`host domain.net | awk '{ print $3}'`
Doch jetzt habe ich folgendes Problem:
- Mir ist bisher keine Lösung eingefallen wie bzw. wo ich die alte IP lagern soll bis die nächste IP-Änderung kommt.
- Die IP's würde ich einfach mit einer IF-Abfrage abgleichen und schauen ob sich etwas geändert hat.

Falls mir irgendjemand beim finden einer Lösung für mein kleines Problem helfen kann, bitte melden. Würde ich tierisch freuen ;)

Habe eine Problemlösung gefunden (Nach ein wenig rumtüfteln wars gar nicht so schwer wie gedacht!)

Funktionierender Code:

Code: Alles auswählen

#!/bin/sh
ip_cur=`host meinserver.org | awk '{ print $3}'`
ip_old=`tail -1 ip.txt`

if [ $ip_old != $ip_cur ];
then
echo "Setze $ip_old auf $ip_cur"
echo $ip_cur > /home/shtest/ip.txt
echo "IP aktualisiert!"
echo "---------------------------"
echo "Kille TMU-Server (Public) ..."
kill -9 $(pidof ./tmu /internet /game_settings=MatchSettings/blpublic.txt /dedicated_cfg=bl_cfg.txt)
sleep 1s
echo "Done!"
echo "---------------------------"
echo "Kille TMU-Server (Test/War) ..."
kill -9 $(pidof ./tmu /internet /game_settings=MatchSettings/blnewtest.txt /dedicated_cfg=bltrain_cfg.txt)
sleep 1s
echo "Done!"
echo "---------------------------"
echo "Kille Aseco (Public) ..."
kill -9 $(pidof php aseco.php TMNPublic)
sleep 1s
echo "Done!"
echo "---------------------------"
echo "Kille Aseco (Test/War) ..."
kill -9 $(pidof php aseco.php TMNTest)
sleep 1s
echo "Done!"
echo "---------------------------"
echo "Deleting Cache for a faster Bootup ..."
cd /tmu/GameData/Cache
rm -rf *
sleep 2s
echo "Done!"
echo "---------------------------"
echo "Starting TMU-Server (Public) ..."
cd /tmu
sh bigs.sh
sleep 5s
echo "Done!"
echo "---------------------------"
echo "Starting TMU-Server (Test/War) ..."
cd /tmu
sh bigstrain.sh
sleep 5s
echo "Done!"
echo "---------------------------"
echo "Starting Aseco (Public) ..."
cd /tmu/AsecoPublic
sh Aseco.sh
sleep 1s
echo "Done!"
echo "---------------------------"
echo "Starting Aseco (Test/War) ..."
cd /tmu/AsecoTest
sh Aseco.sh
sleep 1s
echo "Done!"
echo "---------------------------"
echo "Restarted everything! You should see the Servers online now"
else
echo "Everything is alright at the Moment ..."
fi
Jetzt habe ich noch einen Cronjob gemacht der alle 30 Minuten die Datei aufruft falls mal irgendwas mit der Leitung passiert ist somit spätestens nach 30 Minuten alles in Ordnung.

Der DynDNS-Server wo ich meine aktuelle IP herkriege wird über eponym ebenfalls alle 30 Minuten geupdated falls nötig.

Vielleicht hilft es ja mal in ferner Zukunft irgendjemandem ;)

Benutzeravatar
bse
Beiträge: 468
Registriert: 19.03.2006 19:58:00
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von bse » 02.04.2007 00:53:48

Falls bei einem IP-Wechsel das Interface zwischenzeitlich down ist, wie z.B. bei der Telekom, dann kannst du auch /etc/network/if-up.d/* verwenden und das Script da rein packen. Welches Interface gerade geuppt wurde, steht in der Variable $IFACE. Alternativ funktioniert auch ein "post-up" Eintrag in der /etc/network/interfaces. Genauere Infos siehe "man interfaces"

Antworten