SMS Format + Bestätigung Formularfeld fehlt

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • SMS Format + Bestätigung Formularfeld fehlt

      Hallo Zusammen,

      ich bin neu mit Bloonix und teste es gerade auf Herz und Nieren, bevor es dann in die Produktion gehen soll. :)

      Ich habe ein Problem und zwar möchte ich über unser SMS GSM Modem direkt die Benachrichtigungen absenden und nicht über einen Dienst per HTTP.

      Folgendes habe ich in der Bloonix-Server "main.conf" konfiguriert:

      Source Code

      1. sms
      2. {
      3. command /usr/local/bin/sendsms '%TO% '%MESSAGE%'
      4. response --
      5. }



      Ergebnis in der "bloonix-server.log":

      Source Code

      1. /usr/local/bin/sendsms 0049000000000 ROCMONBL 10.10.5.112 - Diskusage check WARNING - %2F%3A - freeper%3D97%25 is greater than 10 %5BW%5D%2C usageper%3D3%25%2C iusageper%3D1%25


      Das sind zum einen mehr als 160 Zeichen und leider ist das nicht wirklich auf dem Handy zu lesen. :( Bisher geht die SMS auch noch nicht raus, da vermute ich ein Sudoers Problem in Debian 8.

      Wäre es möglich, dass ich das im Code oder über ein Template ändern kann oder das nicht als "urlencode" ausgegeben wird?

      Des Weiteren fehlt bei meinen Checks (z.B. Diskusage) das Feld „Bestätigung“ damit man diese Acken kann – muss ich dafür noch was bestimmtes konfigurieren?

      Ich freue mich von euch zu hören.


      Viele Grüße
      Richard
    • Zur genauen Stelle im Code gabs letztens mal einen Thread, bitte suche den via Suche und verlinke ihn hier.

      > Das sind zum einen mehr als 160 Zeichen und leider ist das nicht wirklich auf dem Handy zu lesen.
      Wie funktioniert das sendsms script (woher ist das)?

      > Bisher geht die SMS auch noch nicht raus, da vermute ich ein Sudoers Problem in Debian 8.
      more info pls

      > Des Weiteren fehlt bei meinen Checks (z.B. Diskusage) das Feld „Bestätigung“ damit man diese Acken kann – muss ich dafür noch was bestimmtes konfigurieren?
      Ich kann Dir nicht folgen - was meinst du genau? Bitte lade ggf Screenshots mit hoch.
      A service is only a service if its monitored.
    • Hi,

      vielen Dank für Deine Antwort. Das sendsms ist aus dem SMSTools3 Paket (smstools3.kekekasvi.com/index.php) und wird über die CLI auf der Shell aufgerufen.

      Eine Idee wäre sonst, dass man den URLENCODE der Variable %MESSAGE% in ein lesbares Format (z.B. wie es dann als SMS ankommt) und ich dann hinter dem Befehl "sendsms" anhänge. Kannst du das oder hast du eine Lösung dafür?

      Anliegend ein Screenshot von den Einstellungen des Service, wo ich das Formularfeld "Bestätigt" versuche zu finden.


      Grüße
      Images
      • 1.png

        41.31 kB, 1,110×574, viewed 100 times
      • 2.png

        33.9 kB, 1,217×440, viewed 94 times
      • 3.png

        25.3 kB, 749×449, viewed 104 times

      The post was edited 1 time, last by rocrk ().

    • Fakt ist, dass im Moment nur HTTP Gateways direkt unterstützt werden, aus diesem Grund ist die Nachricht URL enkodiert und wird normalerweise an einen curl Aufruf übergeben. Das ist auch der Grund, weshalb es mehr als 160 Zeichen sind, denn aus einem Whitespace wird zum Beispiel %20. Somit ist die Nachricht deutlich länger.

      Wenn du das nicht möchtest, dann müsstest du ein eigenes kleines Skript schreiben, die Nachricht dekodieren und dann selbst an sendsms übergeben... oder aber du verwendest ein SMS Gateway, welches man über http ansprechen kann.

      Wir verwenden beispielsweise primär messagebird.com/ und als Failover smstrade.de/.
    • Ich war mal so frei und hab ein kleines Skript geschrieben. Das Skript dekodiert alles und man kann es an etwas beliebiges übergeben:

      Source Code

      1. #!/usr/bin/python3.4
      2. import sys
      3. import urllib.parse
      4. from subprocess import Popen, PIPE
      5. to = urllib.parse.unquote_plus(sys.argv[1])
      6. message = urllib.parse.unquote_plus(sys.argv[2])
      7. p = Popen(["echo", to, message], stdout=PIPE, stderr=PIPE)
      8. try:
      9. outs, errs = p.communicate(timeout=10)
      10. except Exception as e:
      11. p.kill()
      12. outs, errs = p.communicate()
      13. print(e)
      14. sys.exit(1)
      15. outs = outs.decode("utf-8")
      16. errs = errs.decode("utf-8")
      17. print(outs)
      18. print(errs, file=sys.stderr)
      Display All


      Hier muss man lediglich "echo" durch das ersetzen, was du gerne aufrufen möchtest. Argumente müssen im Array aufgesplittet werden.

      Nachtrag:

      apt-get install python3.4
      oder
      yum install python34

      :)
    • Hi Jonny,

      wow das ist wirklich super genial, ich bin überwältigt und denke, es macht in jedem Fall Sinn, dass wir mit Bloonix durchstarten.

      Ich teste das Script gleich mal und dann sehen wir, ob der Versand mit dem CPT 58 SMS GSM Modem funktioniert. Somit ist man nämlich auch unabhängig von der Funktionalität des Internets (Netzwerk).
    • Hi Jonny,

      ich habe es probiert aber bin damit überfordert. Ich kenne mich mit Arrays & Co. leider nicht aus und ich habe das Script in eine Datei "bloonix_sms
      .py" abgespeichert. In der bloonix-server.conf bei dem SMS Command angegeben, aber das klappt leider nicht. Hast du bitte noch einen Tipp für mich?

      So sieht es aktuell aus:

      sms {
      command /etc/bloonix/sms-modem/bloonix_sms.py %TO% '%MESSAGE%'
      response --
      }

      Folgender Fehler / Auszug aus der Logdatei:

      [Apr 24 2017 17:17:51] NOTICE 31907 0.001320 127.0.0.1 send sms to 00491703011303: XXXMONBL 10.10.5.112 - Diskusage check WARNING - %2F%3A - freeper%3D97%25 is greater than 10 %5BW%5D%2C usageper%3D3%25%2C iusageper%3D1%25 (host id 1) (/usr/share/perl5/Bloonix/Server.pm, line 2416)
      [Apr 24 2017 17:17:51] NOTICE 31907 0.000196 127.0.0.1 /usr/bin/python /etc/bloonix/sms-modem/bloonix_sms.py 00491703011303 'ROCMONBL 10.10.5.112 - Diskusage check WARNING - %2F%3A - freeper%3D97%25 is greater than 10 %5BW%5D%2C usageper%3D3%25%2C iusageper%3D1%25' 2>&1 (host id 1) (/usr/share/perl5/Bloonix/Server.pm, line 2452)
      [Apr 24 2017 17:17:51] ERROR 31907 0.014325 127.0.0.1 error send sms to 00491703011303, string '--' not found in output: File "/etc/bloonix/sms-modem/bloonix_sms.py", line 18
      print(errs, file=sys.stderr)
      ^
      SyntaxError: invalid syntax
    • Ich bin mir nicht sicher, ob Jonnys Script hier nicht missverstanden wurde.

      Wenn Ihr SMS via $provider via HTTP schicken wollt, braucht ihr das Script hier nicht. Wenn Ihr Slack oder so nutzen wollt, dann könnt Ihr dieses Script hier zu Euren Zwecken forken. Es gab hier im Forum immer wieder Threads zum Thema "wie binde ich XYZ Chat services an, wie verändere ich das SMS Template". Dieser Thread zeigt einen möglichen Weg auf, die erste Frage zu beantworten.

      Wenn Ihr die Templates ändern wollt (hier my way), dann nutzt E-Mails, gebt die an ein lokales Postfix ab und nutzt dort Filter und Aliase um das weg zu pipen. Postfix nach Slack z.B. sollte im Inet zu finden sein. Für E-Mails kann man bereits (in Bloonix) die Templates anpassen (bzw es gibt ein Template).

      PS: *LIKE* @ Jonny! :)
      A service is only a service if its monitored.
    • Hallo,

      ich möchte keinen Provider per HTTP benutzen, sondern ich habe ein eigenes SMS GSM-Modem welches per USB im DataCenter an den Server angeschlossen ist und nunmehr SMS Sendekommandos über den CLI Befehl "sendsms" annimmt. Das Modem gibt es hier: shop.netways.de/produkt/cep-ct63-terminal-usb-powered/ (nicht als Werbung, sondern zum Verständnis).

      Hier muss eine Kommandozeile übergeben werden, welche jedoch aufgrund des urlencode noch kryptisch ist.

      Der Weg über die E-Mails ist m.E. viel zu umständlich, denn wir sind kurz vor dem Ziel - es muss lediglich das urlencode umgewandelt werden, was dann die richtige Zeile für das SMSTools3 "sendsms" ist.

      So erwartet das Programm die Übergabe:

      Source Code

      1. #> /usr/local/bin/sendsms 0049000000000 'ROCMONBL 10.10.5.112 - Diskusage check WARNING - freeper is greater than 10 %'


      Das war's schon, das wäre toll!!
    • Hi,

      genau so lautet die Zeile in Deinem Script, welches der Bloonix-Server aufruft und in dem Logfile findet sich dann folgende Fehlermeldung:

      Folgender Fehler / Auszug aus der Logdatei:[Apr 24 2017 17:17:51] NOTICE 31907 0.001320 127.0.0.1 send sms to 00491703011303: XXXMONBL 10.10.5.112 - Diskusage check WARNING - %2F%3A - freeper%3D97%25 is greater than 10 %5BW%5D%2C usageper%3D3%25%2C iusageper%3D1%25 (host id 1) (/usr/share/perl5/Bloonix/Server.pm, line 2416)[Apr 24 2017 17:17:51] NOTICE 31907 0.000196 127.0.0.1 /usr/bin/python /etc/bloonix/sms-modem/bloonix_sms.py 00491703011303 'ROCMONBL 10.10.5.112 - Diskusage check WARNING - %2F%3A - freeper%3D97%25 is greater than 10 %5BW%5D%2C usageper%3D3%25%2C iusageper%3D1%25' 2>&1 (host id 1) (/usr/share/perl5/Bloonix/Server.pm, line 2452)[Apr 24 2017 17:17:51] ERROR 31907 0.014325 127.0.0.1 error send sms to 00491703011303, string '--' not found in output: File "/etc/bloonix/sms-modem/bloonix_sms.py", line 18print(errs, file=sys.stderr)^SyntaxError: invalid syntax
    • rocrk wrote:


      sms {
      command /etc/bloonix/sms-modem/bloonix_sms.py %TO% '%MESSAGE%'
      response --
      }


      Ist denn "--" tatsächlich in der Response enthalten, wenn die SMS erfolgreich abgesendet wurde? Response ist super wichtig und muss richtig gesetzt werden, denn wenn das nicht matched, dann versucht der Bloonix-Server mit jedem Intervall die SMS erneut zu versenden. Du würdest dann jeden Intervall eine SMS bekommen :)

      Falls du nicht genau weißt, was dahin gehört.... was ist der Output von /usr/local/bin/sendsms, wenn eine SMS erfolgreich abgesendet wurde?
    • HERVORRAGEND! Klappt wie geschnitten Brot .. :) :)
      Die SMS hat jetzt das normale Format und man ist direkt informiert. Das Ende vom Output fehlte tatsächlich, das sind 2x -- und das wars!

      Vielen Dank für Euren Support!!!

      Ist es eigentlich unproblematisch, wenn ich als "Host" nicht die vollständige URL eintrage, da auch die IP eingetragen ist? Der Hintergrund ist, dass die Servernamen und FQDN bereits sehr lang ist, deshalb nutze ich aktuell nur den Servernamen ohne FQDN.... also eine Art "Shortname". :)
    • > Ist es eigentlich unproblematisch, wenn ich als "Host" nicht die vollständige URL eintrage, da auch die IP eingetragen ist? Der Hintergrund ist, dass die Servernamen und FQDN bereits sehr lang ist, deshalb nutze ich aktuell nur den Servernamen ohne FQDN.... also eine Art "Shortname".

      Möglich, dass ich hier falsch liege - ich glaube: :)

      - Der hostname ist weitestgehend egal. Du kannst ihn aber in den Checks mit einer Variable %HOSTNAME% oder so verwenden. Das bringts z.B. bei Templates (welche ich persönlich nicht toll finde)
      - Der Agent telefoniert immer zum Server. D.h. du kannst auf Deinem Laptop hinter NAT einen Bloonix Agenten einrichten und das funktioniert dann. Die Zuteilung Agent <-> Host in der WebUI läuft nach IDs, nicht nach IP oder Hostname. IP und Hostname sind nur Metadaten für das Objekt, welches anhand der ID "bekannt" ist.
      - Bei der Bestätigt Frage kann ich dir nicht ganz folgen und mutmaße, dass Du z.B. rote Checks "acknowledgen" willst (meine GUIs sind alle auf en ;) ). Wenn ja markiere den oder die Services und dann sind da links unten so Buttons.. Einer davon ist "acknowledge the current status of the service" oder sowas. Wenn Du das machst taucht neben dem Check (nach F5 drücken) auch das passende Icon auf. Die Notifications sind dann so lange prohibited, bis sich der Status des Checks wieder ändert (z.B. von crit zu warn). Für diesen change kriegst Du dann auch eine E-Mail. Du kriegst aber nicht (by default) einmal pro Stunde eine E-Mail, wenn du den status acknowledged, solange der Check gleichbleibend z.B. rot ist.
      A service is only a service if its monitored.
    • Das mit den Hosts ist so ein Ding. Man kann ja auch einen Host google.de anlegen. Google.de ist halt ein CDN, das sind viele hosts ;) Kunden von uns haben auch ein CDN, da lege ich dann für den Host des Loadbalancers HTTP Checks an, die das CDN mit prüfen.. Kann man sich so oder so bauen. Bloonix lässt einem da etwas Spielraum sich auszuleben.

      Merken muss man sich, dass ein Host in Bloonix kein physischer Host sein MUSS - auf den man root Zugriff hat. Ein Host kann google.de sein, ein Host kann auch smtp.hosteurope.de sein. Usw.

      Letztendlich ist ein Host halt eine ID + ggf., muss aber nicht, noch ein Typ localhost (oder intranet) agent, welcher für diesen Host Daten abliefert.

      Jeder Host hat mindestens einen Agenten, den remote type Agenten. Wenn man passend Checks anlegt, dann wird der genutzt.

      Jetzt weiß ich noch aus dem Hinterkopf, dass wenn man einen Agenten auf example.com installiert und den auf bloonix.example.com autoregistern lässt und dann aber keine Checks anlegt, dort auch irgendwelcher Keepalive-Check Kram passiert. Jonny hatte mir das mal erklärt, aber ich weiss es nicht mehr sicher.
      @Jonny, wenn example.com Typ localhost Agent für einen Host mit ID 2 in bloonix.example.com ist, dort aber keine (weder localhost, intranet noch remote type) checks eingerichtet sind, welche Art von Kommunikation findet wie / wann zwischen Bloonix Server und Bloonix Agent statt?
      A service is only a service if its monitored.
    • PPS: Ich hatte das Thema mit der IP glaube ich mal mit Jonny. Die IP des Hosts ist beim anlegen nicht relevant, wird aber derzeit glaube ich force required, sonst kann man keine Hosts anlegen. Der Server telefoniert aber nicht zur IP - der Agent weiss die IP des Servers und holt sich die Checks ab und laed die Results dann da hin hoch.

      Wenn ich mich richtig erinnere meinte Jonny damals, dass das Requirement der IP beim anlegen eines Hosts von Hand in der WebUI eig nicht benötigt ist.

      Daher nochmal zusammenfassend die Frage: Die "Metadaten" der Hosts dienen größtenteils der Verwendung in Variablen (%HOSTNAME%) sowie der Übersicht für Menschen in der WebUI. @Jonny, hab ich das richtig im Kopf?
      A service is only a service if its monitored.
    • Korrekt, ein Host besteht nur aus nur Metadaten, welche man frei vergeben kann. Ausschlaggebend ist immer Host-ID + Passwort, alles andere ist wumpe.

      Zum Protokoll:

      Der Bloonix-Server ist passiv, der Agent ist aktiv. Das heißt, dass der Agent sich beim Bloonix-Server meldet, ihm die Host-ID + Passwort übermittelt und dann nach den Services fragt, die geprüft werden müssen. Das macht der Agent im vorgebenen Intervall (poll_interval in /etc/bloonix/agent/main.conf). Wenn keine Services eingerichtet sind, schickt der Server einfach ein leeres Array :) Der Agent fragt trotzdem im Intervall von poll_interval immer wieder nach.

      Das ganze Verfahren ist hier ziemlich gut erklärt:

      bloonix.org/de/docs/about/how-does-bloonix-work.html

      und die Locations mit remote, intranet, localhost hier:

      bloonix.org/de/docs/faq/how-do…r-hosts-and-services.html

      und Variablen werden hier erklärt:

      bloonix.org/de/docs/webgui/host-variables.html