Welcome to Pandora FMS Community!

Find answers, ask questions, and connect with our community around the world.

Welcome to Pandora FMS Community Forums Soporte de la comunidad Consulta SQL y modulo no inicializado

  • Consulta SQL y modulo no inicializado

    Posted by gairhald on April 12, 2017 at 17:29

    Buenas,

    Quiero que el servidor donde tengo el agente pandora instalado, ejecute unas querys SQL y se envien los datos al Servidor de Pandora, pero todo el rato el modulo aparece como no incializado y ya no se que más mirar.

    Os pongo en situación

    Tengo esta Query Sencilla que me devuelve un valor, 1 o 0

    SELECT [active]
      FROM [Smartkanban].[dbo].[drf_rf_lectoresrf]
      Where [IdLectorRF]='133'

    y luego tengo un script en powershell que llama a esta query, tal que:

    $query=SQLCMD.EXE -d XXXX -U XXXXX-P XXXXX -i "C:Scriptsquery.sql"
    $query

    Cuando ejecuto el script via powershell me retorna un 0 en este caso

    En el Pandora Agent tengo este modulo definido

    module_begin
    module_name Alive
    module_type generic_data
    module_exec powershell -File sqlcmd.ps1
    module_description Alive
    module_group application
    module_end

    Bien, esto debería llegar a Pandora_Console y mostrarme un 0,no? como todos los otros scripts que he hecho en otras ocasiones.

    Pues en pandora_console aparece como modulo no incializado en Azul, como sino recibiese datos y no entiendo el porque?

    si lo pongo en modo debug, tengo esto

    
    	
    	
    	
    	
    	application
    
    

    El otro fichero de pandora_agent me muestra lo siguiente:

    2017-04-12 15:37:06 Output error on module Alive
    2017-04-12 15:38:06 Output error on module Alive

    Y en el Pandora_console nos e reciben datos…que puede ser? muchas gracias

    saludos

    antonio replied 7 years, 10 months ago 2 Members · 8 Replies
  • 8 Replies
  • antonio

    Member
    April 17, 2017 at 14:27
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola gairhald,

    En el XML si te fijas no se envía ningún dato en el contenido, únicamente el nombre, descripción, etc.

    Puede ser debido a la ejecución indicada en la línea module_exec. Puede que necesites llamar a powershell con la ruta completa, salvo que se encuentre en el PATH y sea reconocido como comando nativo.

    Si ejecutas a mano desde un terminal cmd normal (no el de powershell) la línea, qué te devuelve?

    powershell -File sqlcmd.ps1
    

    Puedes probar a indicar la ruta completa a powershell.exe, una buena forma de depurar esto es justamente haciendo la comprobación que mencionaba, ejecutar en un cmd la línea completa hasta obtener el resultado esperado (1 o 0), que el módulo debería obtener correctamente e inicializarse.

    Un saludo,
    Antonio.

  • gairhald

    Member
    April 19, 2017 at 11:19
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Buenas Antonio,

    Si esta en el path, puesto que al ejectuarlo me lo reconoce y me devuelve un 0. El script que llamo esta dentro de la carpeta pandora_consoleutil.

    C:Program Filespandora_agentutil>powershell -File sqlcmd.ps1
    0
    
    C:Program Filespandora_agentutil>
    

    He probado a cambiar la ruta completa a

    module_exec "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -File sqlcmd.ps1

    y me sigue pasando lo mismo, en el server me dice que el modulo no esta inicializado y aunque debugue sigue siendo lo mismo. No entiendo porque no aparecen datos en el XML referente a este modulo si ejecutandolo en el CMD o en el powershell si devuelve un valor

    Lo unico que acabo de ver es, si ejecuto desde CMD, me devuelve un 0 y luego un salto de linea, mientras que si lo ejecuto desde powershell me devuelve un 0 solo, sin el salto de linea, es posible que Pandora la ejecutarlo desde CMD, este recogiendo ese salto de linea final y por eso no recibe los datos?

    Estoy intentado eliminar el salto final y sigue haciendolo, imagino que el CMD se comporta de manera difernete al Powershell. De todas formas sigue sin funcionar :/

    Aunque tengo asi mas scripts y nunca he tenido este problema

  • antonio

    Member
    April 19, 2017 at 11:38
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola gairhald,

    Ahora que me fijo, es posible que necesites poner la ruta completa también al script en la línea module_exec. Algo así:

    module_exec "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -File "C:Program Filespandora_agentutilsqlcmd.ps1"
    

    Y te aconsejo que continues utilizando el modo debug y analizando lo que muestra el XML para poder descubrir cuál es el problema. Si no se resuelve rápidamente poniendo las rutas completas, prueba jugando con el tema de las comillas, o incluso simplificando la ejecución por un script ps1 que simplemente haga un “echo 1”, para ver si el problema puede estar en el script (que no devuelva un resultado de ejecución admitido o similar). Así ir reduciendo las pruebas hasta ver dónde está el problema, y luego ponerse a solucionarlo 😛

    En cuanto al salto de línea, no creo que sea el problema, efectivamente creo que cmd tiene ese comportamiento siempre cuando se ejecutan los scripts llamando a powershell desde cmd.

    Un saludo,
    Antonio.

  • gairhald

    Member
    April 19, 2017 at 13:23
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Buenas Antonio

    he creado otro script mas basico que recoja la hora

    $date=get-date
    $date.hour
    

    si lo ejecuto, tanto en powershell como en el CMD me devuelve el valor de la hora, solo las HORAS, es decir ahora mismo me da 10.
    Si debugo, veo en el XML que si, si recoge ese valor 10

    	
    	
    	
    	
    	application
    
    
    	
    	
    	
    	
    	application
    	
    
    

    Pero el otro me sigue sin funcionar, no recoge los datos

    Creo que es un problema de tipo de datos. Lo que estoy sacando es un string y pandora necesita recoger un intenger,no? Pero me estoy peleando con convertirlo a int y tampoco parece que funcione...voy a ver si lo puedo sacar de otra manera o algo

  • gairhald

    Member
    April 19, 2017 at 13:54
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    YA ESTA!!

    El problema era como había comentado antes, problema de tipo de datos, al ahcer la consulta, me estaba dando un STRING y no podía convertirlo de array a un int  en powershell, así a saco.

    Así que he tenido que guardar la consulta en un TXT y recogerlo de nuevo en otro array que me lo separaba por saltos de linea y luego unicamente he de mostrar el valor del array que me interesa, que ya lo detecta como un integer.

    Un  poco rebuscado, pero bueno, funciona que es lo que necesitaba, merci por la ayuda Antonio!

    $query = SQLCMD.EXE -d xxxxxx -U xxxxx -P xxxxx -i "C:ScriptsCSA_QUI.sql" | Out-File -FilePath C:Scriptssqlquery.txt -Append
    
    $fileContents = Get-Content "C:Scriptssqlquery.txt"
    $ficheros = $fileContents -split "`r`n"
    $ficheros[2]
  • antonio

    Member
    April 19, 2017 at 13:59
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Uf! Sí has tenido que darle un par de vueltas al final, pero bueno lo importante es que funcione 🙂

    Nada! Me alegro de que hayas logrado solucionarlo. Como consejo para futuras te digo lo mismo, siempre ir reduciendo hasta “la mínima unidad” suele ser buena idea, y se van descartando posibles puntos problemáticos.

    Un saludo,
    Antonio.

  • gairhald

    Member
    April 20, 2017 at 15:49
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Vaya, ahora el problema que tengo es que cuando lo ejecuto con el servicio de PANDORA, no tiene permisos para escribir datos, por lo que no me sirve…es posible poder ejecutar la llamada a powershell como adminsitrador desde el pandora.conf¿

    module_exec run as powershell -File sqlcmd.ps1

    Rollo algo asÍ? merci

  • antonio

    Member
    April 20, 2017 at 18:53
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola gairhald,

    El servicio de pandora no puede escribir en ficheros aunque se encuentren en su propia ruta (la del agente)? Otra opción quizá sería ejecutar el agente con un usuario con permisos superiores, o bien dar permisos de lectura/escritura al usuario pandora sobre el directorio en el que se guarde el fichero de texto temporal.

    Un saludo,
    Antonio.