[Router] auto port mapping bij server down

Pagina: 1
Acties:

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

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


Verwijderd

Elke keer als je webserver dus wel Up is, reset ie ook de firewall, lijkt me niet handig voor active connections, je moet dus wel iets inbouwen dat kijkt naar veranderingen.

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
Op dinsdag 14 mei 2002 23:27 schreef LaurensHPS het volgende:
Elke keer als je webserver dus wel Up is, reset ie ook de firewall, lijkt me niet handig voor active connections, je moet dus wel iets inbouwen dat kijkt naar veranderingen.
Ja, dat doe ik dus door te controleren op de file /root/webcheck/flatrix op deze manier dus:
code:
1
2
3
4
5
6
7
  file  |  status   |
flatrix | webserver | actie
--------+-----------+---------------------------------
  n/a   |    up     | map port, maak file flatrix
bestaat |    up     | doe niets
bestaat |   down    | map port, verwijder file flatrix
  n/a   |   down    | doe niets

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op