ISA-Hamburg Geschrieben 19. April 2010 Geschrieben 19. April 2010 Hallo zusammen, habe folgendes Problem: Apache + mysql-cluster... 2 nodes sind mit einem Management-Server verbunden So...ich habe nun ein Script geschrieben das mir eine Mail schicken und einen Dienst neustarten soll, wenn die nodes nicht mehr mit dem Management-Server verbunden sind. Hier das Script: #!/bin/sh MAILTEXT='/tmp/ndbd.txt' SERVICE='ndbd' if ((/usr/local/bin/ndb_mgm -e show | sed -ne '5p' | grep "not connected" > /dev/null) || /usr/local/bin/ndb_mgm -e show | sed -ne '6p' | grep "not connected" > /dev/null ); then if ssh (user@ip) "ps ax | grep -v grep | grep $SERVICE > /dev/null" ; then echo "hostname1: looks fine $SERVICE service running" else echo "WARNING: $SERVICE service is not running on hostname1. Restarting Node now" > $MAILTEXT ssh user@ip 'sudo /etc/init.d/mysql-ndb restart' >> $MAILTEXT fi if ssh user@ip "ps ax | grep -v grep | grep $SERVICE > /dev/null" ; then echo "hostname2: looks fine $SERVICE service running" else echo "WARNING: $SERVICE service is not running on hostname2. Restarting Node now" >> $MAILTEXT ssh user@ip 'sudo /etc/init.d/mysql-ndb restart' >> $MAILTEXT fi mail -s Warning:\ hostname meinemail@bla.com < $MAILTEXT else echo "node is running, everything is fine" fi Das script wird alle 5 min durch einen Crontab durchgeführt... jetzt bekomm ich allerdings alle 5 min folgendes per mail gesagt: hostname1: looks fine ndbd service running hostname2: looks fine ndbd service running Hoffe mir kann jemand helfen... wahrscheinlich isses ne klammer oder so, ich kenn mich ja :floet: Zitieren
lupo49 Geschrieben 19. April 2010 Geschrieben 19. April 2010 Das ist wahrscheinlich die Konsolenausgabe vom Skript, die der crond nimmt und an root sendet. Pack hinter den Befehl im Crontab-Eintrag ein > /dev/null 2>&1 und teste erneut. Zitieren
ISA-Hamburg Geschrieben 20. April 2010 Autor Geschrieben 20. April 2010 Das ist wahrscheinlich die Konsolenausgabe vom Skript, die der crond nimmt und an root sendet. Pack hinter den Befehl im Crontab-Eintrag ein Code: > /dev/null 2>&1 und teste erneut. Hi, danke erstmal für die schnelle Antwort. Hat aber leider nicht das gewünschte ergebnis gebracht... Ich glaub ja eher, dass etwas mit der logik nicht stimmt... denn er soll ja erst wenn die beiden nodes "not connected" sind in die schleife gehen... ansonsten gleich rausspringen und KEINE Mail senden... Zitieren
ISA-Hamburg Geschrieben 20. April 2010 Autor Geschrieben 20. April 2010 doh! :upps is klar, dass er in die if schleife geht, wenn er garkeinen vergleich hat, mit der er das dort vergleichen soll... :S ich sag ja, ich kenn mich und meine Fehler... Also nun die Frage: Gegen was könnte ich es vergleichen? Wenn ich /usr/local/bin/ndb_mgm -e show | sed -ne '5p' | grep "not connected" alleine ausführe, kommt nix zurück... wenn dort not connected stehen würde, würde das ja dann ausgegeben werden... Zitieren
lupo49 Geschrieben 20. April 2010 Geschrieben 20. April 2010 /usr/local/bin/ndb_mgm -e show | sed -ne '5p' | grep "not connected" Wenn der Dienst gestoppt ist, dann findet grep die Zeichenkette. Wenn der Dienst gestartet ist, dann kommt keine Ausgabe? Schreib das Ergebnis in eine Variable und nutze dann die Variable in der IF-Abfrage? Zitieren
ISA-Hamburg Geschrieben 26. April 2010 Autor Geschrieben 26. April 2010 if (/usr/local/bin/ndb_mgm -e show | sed -ne '5p' | grep "not connected" ) || (/usr/local/bin/ndb_mgm -e show | sed -ne '6p' | grep "not connected" ) ; then da war der Fehler... da war ein Umbruch drinne und die Klammern waren ein wenig falsch gesetzt... :upps Aber danke Trotzdem, für deine Hilfe! VG Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.