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:29Buenas,
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
-
::
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. -
::
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
-
::
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. -
::
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 10application 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
-
::
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]
-
::
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. -
::
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
-
::
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.