Kleine und große Linux AHAs
Beiträge getaggt mit script
Schizophrene Router überwachen
25. Mrz
Es geht um redundante Internetanbindungen. Bekommt man diese von seinem Provider installiert, so hat man zwei Router in seinem Rechenzentrum stehen. Beide Router haben eine IP Addresse und halten eine weitere, virtuelle Addresse dei das Gateway darstellt.
Unterschiedliche Bandbreiten
Nun ist es so, dass man nur selten zweimal mit der identischen Bandbreite angebunden wird. Beispielsweise – auch je nach Standort – kann es sein, dass man nur 10% der normalen Leistung auf dem Backupmedium hat. So ist es natürlich wichtig zu wissen wenn die Hauptleitung ausfällt um einerseits das Problem zu melden und auch andererseits vielleicht diverse Dienste abzuschalten. Nur wie kann man erkennen welcher Router gerade aktiv ist? SNMP Zugriff ist meist auf Providerrouter nicht möglich – warum auch immer.
Welcher ist aktiv?
Wir hatten dann zuerst geplant die MAC Addresse über ARP zu prüfen – wenn sie sich ändert wäre der Router umgeschaltet worden. Leider nimmt HSRP (Hot-Standby-Routing-Protocoll) die MAC Addresse mit. Also ging das auch nicht. Was dann ging ist das ganze per traceroute zu machen. Traceroute zeigt als einen Hop eine der festen IPs der Router. Auf diese Weise kann man also bestimmen welcher Router gerade aktiv ist.
Das Script dazu
#!/bin/bash
# Dieses Script prueft per traceroute welcher
# Router gerade aktiv ist.
#
# Da wir keinen Zugriff auf die Router haben
# (snmp oder anders) musste das so gemacht werden.
#
# Ronny Becker, 03.2011
# Gateway IPs
PRI_GW=""
SEC_GW=""
# HOPs to GW
GW_HOPCOUNT="2"
# Check Target(s)
TEST_TARGET="www.heise.de www.google.de"
# Do your job
for TARGET in $TEST_TARGET
do
# run trace
TRACE=$(traceroute -m $GW_HOPCOUNT $TARGET 2>&1)
if [ $? != 0 ]
then
continue
fi
# check if primary matches
if [[ $TRACE =~ $PRI_GW ]]
then
echo "Primary Gateway active"
exit 0
fi
# check if secondary matches
if [[ $TRACE =~ $SEC_GW ]]
then
echo "Seconday Gateway active"
exit 1
fi
done
echo "Unknown Gateway status"
exit 2
Das Script ist so gemacht, dass es von Nagios genutzt werden muss. Wer das ganze auf Mail umstellen möchte muss halt ein paar Änderungen vornehmen.
[Update] Und heute im Ü-Ei: Advanced Disclaimer für Postfix
10. Mrz
In meinem Artikel zum Advanced Disclaimer für Postfix mit Hilfe von altermime haben sich ein paar kleine Fehler eingeschlichen. Ich habe die Fehler nun korrigiert und den Artikel (den Script Teil) überarbeitet.
Fehler 1:
Die Empfängeraddresse wurde nicht richtig bestimmt
REC_DOMAIN=${2##*@}
muss heißen
REC_DOMAIN=${4##*@}
Fehler 2:
Durch diesen Fehler kann es passieren, dass Mails teilweise ganz abgeschnitten ankommen, bzw. auch teilweise “nur” der Anhang fehlt. Das ganze ist darauf zurückzuführen, dass sich in der Mail – wenigstens dann wenn sie von altermime bearbeitet wurde – eine Zeile mit lediglich einem Punkt befindet. Dies wird von Postfix bei der Rückgabe als “ende” interpretiert. Daher muss der sendmail Aufruf innerhalb des Scripts angepasst werden (3x).
Aus
$SENDMAIL "$@" <in.$$
wird also
$SENDMAIL -i "$@" <in.$$

