Ik kwam er net achter dat, door een stroomstoring en een lilo fout m'n webserver niet meer wou booten.. De router bootte wel gewoon..
Hierdoor was mijn webserver niet meer bereikbaar. Omdat ik toch nog een andere computer 24/7 heb draaien, waar ook een webserver op draait, leek het me handig om een scriptje te schrijven die controleerd of de webserver up is, en als dat niet zo is, de port-mapping aanpast, zodat de requests naar de andere webserver gaan. (Met een temporary unavailable pagina)
Ik zal de source hier posten, misschien dat iemand anders er nog wat aan heeft! Voor de port-mapping gebruik ik trouwens rinetd. Als je dat via je firewall ofzo doet, kun je de code vast wel aanpassen
Nu kun je dit gewoon in je crontab schedulen.
Even wat uitleg:
- In RESULT wordt een 1 gezet als hij een ping terugkrijgt van de webserver (flatrix, 192.168.1.3) als hij niets terugkrijgt, staat er een 0 in.
- In FLATRIX wordt een 1 gezet als de file /root/webcheck/flatrix bestaat. Zo niet wordt er niets in gezet. Dit wordt gebruikt om te voorkomen dat hij elke keer weer de config-files van rinetd gaat veranderen, en elke keer rinetd restart.
- Vervolgens wordt gekeken of RESULT 1 is, dus of de webserver up is. Daarna of FLATRIX niet 1 is, dus of de configfiles nog niet goed staan. Dan worden de configfiles goedgezet, en wordt er gerestart.
- Het laatste deel gaat op dezelfde manier, voor het geval de webserver down is
Dit is trouwens snel in elkaar geflansde code, dus het zal ongetwijfeld sneller, beter, of mooier kunnen
Hierdoor was mijn webserver niet meer bereikbaar. Omdat ik toch nog een andere computer 24/7 heb draaien, waar ook een webserver op draait, leek het me handig om een scriptje te schrijven die controleerd of de webserver up is, en als dat niet zo is, de port-mapping aanpast, zodat de requests naar de andere webserver gaan. (Met een temporary unavailable pagina)
Ik zal de source hier posten, misschien dat iemand anders er nog wat aan heeft! Voor de port-mapping gebruik ik trouwens rinetd. Als je dat via je firewall ofzo doet, kun je de code vast wel aanpassen
Nu kun je dit gewoon in je crontab schedulen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #!/bin/bash
RESULT=`ping 192.168.1.3 -c1 -n -q | grep -c "1 packets received"`
FLATRIX=`find /root/webcheck/flatrix -printf "1" 2> /dev/null`
if [ "$RESULT" == "1" ]; then
# Flatrix is online
if [ "$FLATRIX" != "1" ]; then
# Verplaats website naar Flatrix
touch /root/webcheck/flatrix
rm /etc/rinetd.conf
cp /root/webcheck/rinetd.conf /etc/rinetd.conf
cat /root/webcheck/rinetd.flatrix.conf >> /etc/rinetd.conf
/etc/init.d/rinetd restart
fi
else
# Flatrix is down
if [ "$FLATRIX" == "1" ]; then
# Verplaats website naar Wijnix
rm /root/webcheck/flatrix
rm /etc/rinetd.conf
cp /root/webcheck/rinetd.conf /etc/rinetd.conf
cat /root/webcheck/rinetd.wijnix.conf >> /etc/rinetd.conf
/etc/init.d/rinetd restart
fi
fi |
Even wat uitleg:
- In RESULT wordt een 1 gezet als hij een ping terugkrijgt van de webserver (flatrix, 192.168.1.3) als hij niets terugkrijgt, staat er een 0 in.
- In FLATRIX wordt een 1 gezet als de file /root/webcheck/flatrix bestaat. Zo niet wordt er niets in gezet. Dit wordt gebruikt om te voorkomen dat hij elke keer weer de config-files van rinetd gaat veranderen, en elke keer rinetd restart.
- Vervolgens wordt gekeken of RESULT 1 is, dus of de webserver up is. Daarna of FLATRIX niet 1 is, dus of de configfiles nog niet goed staan. Dan worden de configfiles goedgezet, en wordt er gerestart.
- Het laatste deel gaat op dezelfde manier, voor het geval de webserver down is
Dit is trouwens snel in elkaar geflansde code, dus het zal ongetwijfeld sneller, beter, of mooier kunnen
Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op