Asterisk Backticks

Publicado julio 29, 2008 por orakernel

Buenos días por la mañana. Ayer me encontre con una aplicación muy útil que todos nos creemos que Asterisk la trae “de serie” pero no es asi. Se trata de ejecutar un script y guardar el resultado en una variable para ser usada en el dialplan. Recordemos que tenemos la aplicacion system, para ejecutar comandos/scripts en el servidor, pero a veces se nos queda corta. Veamos como se utiliza el Backticks.

Necesitamos bajar esta aplicacion de terceros al directorio apps de las fuentes de nuestro Asterisk. Compilamos y listo para usar ¡¡OJO!! La aplicacion no sale al ejecutar make menuselect, pero creeroslo, esta ahí.

Para comprobar que efectivamente se ha compilado sin problemas, ejecutamos en la consola de Asterisk:

ast-pruebas*CLI> core show application BackTicks
-= Info about application 'BackTicks' =-
[Synopsis]
Execute a shell command and save the result as a variable.
[Description]
Backticks(<VARNAME>|<command> )
Be sure to include a full path!

Probemoslo. Creamos un nuevo contexto y nos aseguramos que sea “alcanzable” desde la extensión que vamos a usar para las pruebas:

[outgoing_pruebas]
exten => 123,1,NoOP(prueba de backticks)
exten => 123,n,Answer()
exten => 123,n,Set(variable=)
exten => 123,n,Backticks(variable|/etc/asterisk/prueba.sh)
exten => 123,n,NoOP(la ejecucion del script a devuelto ${variable})
exten => 123,n,Hangup()

El contenido del script puede ser por ejemplo:

#!/bin/sh
echo "hola"

Nos conectamos a la consola, un reload y ponemos el verbose a 10. Llamamos desde la extension y veremos:

Verbosity is at least 10
-- Remote UNIX connection
-- Executing [123@outgoing_pruebas:1] NoOp("SIP/1000-082966d8", "prueba de backticks") in new stack
-- Executing [123@outgoing_pruebas:2] Answer("SIP/1000-082966d8", "") in new stack
-- Executing [123@outgoing_pruebas:3] Set("SIP/1000-082966d8", "variable=") in new stack
-- Executing [123@outgoing_pruebas:4] BackTicks("SIP/1000-082966d8", "variable|/etc/asterisk/prueba.sh") in new stack
-- Executing [123@outgoing_pruebas:5] NoOp("SIP/1000-082966d8", "la ejecucion del script a devuelto hola") in new stack
-- Executing [123@outgoing_pruebas:6] Hangup("SIP/1000-082966d8", "") in new stack
== Spawn extension (outgoing_pruebas, 123, 7) exited non-zero on 'SIP/1000-082966d8'

Fácil y muy util, no para esta chorrada, pero seguro que a más de uno le va a resultar muy útil, al menos a mi asi me lo parece.

extraido con amor de: http://www.roboguys.com/index.php?option=com_content&task=view&id=87&Itemid=47

Puto Psicópata.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: