Cursos Asterisk en México

[RESUELTO] Ejecutar Script con una llamada

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • [RESUELTO] Ejecutar Script con una llamada

    Buenos dias a todos!!!, les cuento que tengo problemas en ejecutar un script desde una llamada telefonica.

    La idea seria, tras atender la IVR, cuando el usuario se dirija a un interno en particular, ese interno ejecute un Script en asterisk.

    El problema es que si bien esta configurados el interno que sirve como "aplicacion" para ejecutar el script, tras ejecutar el script este no realiza nada.

    Eh probado en ejecutar el script directamente y eh tenido buenos resultados. Pero al ejecutarlo atravez de una llamada telefonica no eh conseguido que se ejecute el script.

    Probe con dar permisos con chmod 777 al script y ejecutarlo con System(script.sh) o Agi(script.sh)
    Tambien probe con darle permisos al usuario asterisk: chown asterisk:asterisk /var/libasterisk/agi-bin/script.sh

    Que hace el script?

    El script llama por ssh a un router y lo hace ejecutar un script interno.

    el script es:

    "#!/usr/local/bin/bash
    ssh -l user -i /home/Certificados/id_dsa 172.16.0.1 "/system script run 4""

    y en el archivo extensions.conf lo eh configurado de la siguiente manera:

    [Wakeonlan]
    exten => 010,1,Answer()
    exten => 010,n,AGI(script.sh)

    y tambien probe con la variante de System()

    [Wakeonlan]
    exten => 010,1,Answer()
    exten => 010,n,System(/var/libasterisk/agi-bin/script.sh)

    La cuestion es que no me ejecuta el script desde una llamada telefonica. No importa el contenido del script. Si el script solo crea una carpeta en el sistema, tampoco lo hace.

    Estoy utilizando Elastisk y la version 1.8 de Asterisk.

    Si me pueden dar una mano, se los agradeceria. Saludos a Todos!!!
    Editado por última vez por WalterG; https://asteriskmx.org/foros/member/1696-walterg en 02-21-2013, 08:11 PM.

  • #2
    Es muy probable que el usuario asterisk no tenga permisos para ejecutar esos comandos. Debes verificar eso.

    Comentario


    • #3
      Originalmente publicado por navaismo Ver Mensaje
      Es muy probable que el usuario asterisk no tenga permisos para ejecutar esos comandos. Debes verificar eso.
      Como se verifica y/o Configura ??

      Muchas Gracias!! por tu tiempo y respuesta!!!!

      Comentario


      • #4
        Generalmente para verificar te pasas al Shell del usuario con "su asterisk" pero creo que elastix no habilita el Shell del usuario asterisk. Así que lo que puedes hacer es configurar el archivo sudores para que pueda ejecutar ciertos comandos.

        Comentario


        • #5
          Originalmente publicado por navaismo Ver Mensaje
          Generalmente para verificar te pasas al Shell del usuario con "su asterisk" pero creo que elastix no habilita el Shell del usuario asterisk. Así que lo que puedes hacer es configurar el archivo sudores para que pueda ejecutar ciertos comandos.
          Encontre lo siguiente en el archivo SUDOERS:

          asterisk ALL = NOPASSWD: /sbin/shutdown
          asterisk ALL = NOPASSWD: /usr/bin/yum
          asterisk ALL = NOPASSWD: /bin/touch
          asterisk ALL = NOPASSWD: /bin/chmod
          asterisk ALL = NOPASSWD: /bin/chown
          asterisk ALL = NOPASSWD: /sbin/service
          asterisk ALL = NOPASSWD: /sbin/init
          asterisk ALL = NOPASSWD: /usr/sbin/postmap
          asterisk ALL = NOPASSWD: /usr/sbin/postfix
          asterisk ALL = NOPASSWD: /usr/sbin/saslpasswd2
          asterisk ALL = NOPASSWD: /usr/sbin/hardware_detector
          asterisk ALL = NOPASSWD: /sbin/chkconfig
          asterisk ALL = NOPASSWD: /usr/sbin/elastix-helper

          Que tendria que agregar para que me ejecute el scrip.sh

          "asterisk ALL = NOPASSWD: /bin/sh" ???
          "asterisk ALL = NOPASSWD: /bin/bash" ???

          Algo del AGI ?

          Gracias por tu tiempo! saludos!!!

          Comentario


          • #6
            Tienes que agregar el prpgrama que intentas ejecutar, segun tu script SSH, sin embargo considera bastante el hacerlo ya que asterisk es tambien el dueño de tu servidor web y al agregar otros comandos puede causar graves problemas de seguridad.

            Por otro lado en tu script pones #!/usr/local/bin/bash, estas seguro de que esa es la ruta, generalmente esta en /bin/bash.

            Comentario


            • #7
              Solucionado!!!!!!!!!!!!!!!!!!!!!!!!
              Lo logre!!!, lo que hice fue lo siguiente:

              en extensions.conf :

              [Wakeonlan]
              exten => 080,1,Answer()
              exten => 080,n,System(sudo sh /etc/asterisk/Wol.sh)

              En el archivo Sudoers, agregue:
              asterisk ALL = NOPASSWD: /bin/sh

              y el script quedo:

              #!/bin/sh
              ssh -l user -i /home/Certificados/id_dsa 172.16.0.1 "/system script run 4"

              Al script le di permisos: con chmod +x

              Espero a alguien le sirva, ya que usando la misma logica se puede correr cualquier tipo de script desde una llamada telefonica. Saludos!!! y Gracias!!!!!!

              Comentario

              Nube de Etiquetas

              Colapsar

              Principales Usuarios Activos

              Colapsar

              No hay usuarios activos superiores.
              Trabajando...
              X