Bash Scripts

  • Hallo,


    ich habe ein paar Fragen:


    - Ist es möglich über den Moduldesigner oder der Macro-Funktion ein Bash-Script auszuführen? Wenn ja, Wie?
    - Falls dies der Fall ist: Ist es möglich eine IP eines Telefons, welches einem User zugeordnet ist, in das Bash-Script reinzupipen ?


    Gruß
    Micha

    Einmal editiert, zuletzt von micha ()

  • Hallo,
    Die Funtktion die Du suchst heisst System > Execute
    (sichtbar im "Expert Mode").
    Natürlich kann man in Befehle reinpipen was man will :)

    Yours sincerely / Gruß,
    OH

  • danke für die zügige Antwort OH.


    bei mir ist folgendes szenario:
    die Umleitungsfunktion über das Telefon wurde mit folgendem Macro umgebogen:


    Code
    [specialservice]
    
    
    exten =>_45.,1,Goto(calling,*5${EXTEN:2},1)
    exten =>455,1,Goto(calling,*5,1)


    Ich möchte nun, sobald die Umleitung eingegeben wird ein Shellscript ausführen. Sobald die Umleitung rausgenommen wird, soll ein anderes Shellscript ausgeführt werden.


    Das Problem daran ist, dass ich die IP des Telefons in diesem Macro brauche, von dem die Umleitung gesetzt wird. Ist das möglich? Wie?


    Gruß
    Micha

  • Hallo,
    im Modul:
    Da jeder Benutzer wahrscheinlich nur ein Telefon hat, kannst Du abfragen "wer" gerade anruft, und dann sein Primäres Telefon resolven.
    Die IP des Telefons bekommt man dann entweder aus der Datenbank, - der Tabelle telephone, oder vom Asterisk "sip show peers".


    Im Macro ist das sicherlich auch irgendwie möglich, aber nicht ganz so einfach.

    Yours sincerely / Gruß,
    OH

  • also die 2 Shellscripts stehen soweit.
    Dieses System > Execute ist allerdings nur in Modulen verfügbar. Wir setzen bis jetzt aber ein Macro ein, was seinen Dienst sehr gut verrichtet.


    Meine Frage nun: Kann ich ein Shell-Script auch über ein Macro ausführen? Wenn ja, wie könnte das anhand dem Beispiel oben aussehen?


    Gruß
    Micha

  • hallo,


    laut http://www.voip-info.org/wiki/view/Asterisk+cmd+System gibt es die Möglichkeit Shell-Befehle abzusenden.


    Meine Macroumgebung auf der Starface sieht nun folgendermassen aus:


    Code
    exten =>_45.,1,Goto(calling,*5${EXTEN:2},1)
    exten =>_45.,2,system("/bin/sipsak -i -M -B foo  -s sip:micha@192.168.74.152")
    exten =>455,1,Goto(calling,*5,1)
    exten =>455,2,system("/bin/sipsak -i -M -B bar  -s sip:micha@192.168.74.152")


    Leider funktioniert die System-Funktion so nicht. Wenn ich den String manuell auf der Shell absetze geht es einwandfrei. Ist bei der Starface irgendwas anderes zu beachten? oder ist irgendwas deaktiviert, was das Ausführen der system Funtion verhindert?
    Wie könnte ich weiter vorgehen?


    Gruß
    Micha


    *EDIT*
    Folgendes erscheint im full Log, sobald ich über die Tastenkombination umleite:

    Einmal editiert, zuletzt von micha ()

  • Hi,


    die Prio 2 wird nie ausgeführt, da du in Prio 1 den Call bereits in einen anderen context weiterleitest. Dreh einfach beides einmal um


    Code
    exten =>_45.,1,system("/bin/sipsak -i -M -B foo  -s sip:micha@192.168.74.152")
    exten =>_45.,2,Goto(calling,*5${EXTEN:2},1)
    
    
    exten =>455,1,system("/bin/sipsak -i -M -B bar  -s sip:micha@192.168.74.152")
    exten =>455,2,Goto(calling,*5,1)

    Gruß / Regards
    Philipp

  • Hi Phlipp,


    ich habe es gerade wie beschrieben ausgetestet. Leider wird so die Umleitung nicht mehr ausgeführt, sondern nur noch das Shellscript.
    Es wäre besser, wenn das Shellscript nach dem Aufruf der Umleitung aktiviert werden würde, da ich mir in dem tatsächlichen Script, welches zum Einsatz kommen wird, Informationen aus dem Log ziehe.


    Gruß
    Micha

  • Hab's mal nachgestellt, mit folgendem Ergebnis:



    Code
    exten => _45.,1,system(/bin/echo "'${CALLERID} ${DATETIME}'" >> /root/test)
    exten => _45.,2,Goto(calling,*5${EXTEN:2},1)


    Das geht, die Datei "/root/test"wird mit entsprechendem Inhalt gefüttert...



    Code
    exten =>_45.,1,system(/bin/sipsak -vv -i -M -B test  -s sip:snom360@192.168.2.150)
    exten =>_45.,2,Goto(calling,*5${EXTEN:2},1)


    Das geht insofern, dass beide Prioritäten durchlaufen werden, d.h. erst wird sipsak ausgeführt und danach gehts weiter in den context "calling". Allerdings ändert sich am Snom selbst nichts, das SIP-Paket wird allerdings hingeschickt und auch mit "200 OK" quittiert (sieht man im snom sip-trace bzw. mit tcpdump auf der STARFACE).
    Die Frage nach dem Warum kann ich dir aber nicht beantworten...


    gruß
    philipp

    Gruß / Regards
    Philipp

  • Ich habs!


    Wenn man den sipsak string auf der Shell ausführt, ist er nicht sofort fertig, sondern macht (bei mir zumindest) noch ein paar timeout Ausgaben, bevor der Prozess wieder schliesst. Diese Timeout Angabe geht der Starface wohl zu lange, also entscheidet sie sich dafür nicht zur Prio 2 zu springen, sondern abzubrechen.
    Ich habe den Prozess nun mit "&" am Stringende abserviert, damit die Prio´s weiter durchlaufen können.


    Das einzige was mich etwas ärgert ist, dass er im full.log nichts anzeigt.


    Danke für die Hilfe!


    Gruß
    Micha

  • Zitat

    Diese Timeout Angabe geht der Starface wohl zu lange, also entscheidet sie sich dafür nicht zur Prio 2 zu springen, sondern abzubrechen.


    Das sollte aber nur passieren wenn vom Snom nicht sofort ein OK zurück kommt. Aber ja, dieser Fall sollte auch abgefangen werden ;)

    Gruß / Regards
    Philipp

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!