Bienvenido a la comunidad de Pandora FMS › Forums › Soporte de la comunidad › monitorizar estado tarea programada
-
monitorizar estado tarea programada
Posted by Alki on marzo 30, 2010 at 12:52Hola, llevo muy poquito con pandora,
estoy tratando de monitorizar el estado de una tarea programada de windows, por ejemplo un backup,
he estado intentandolo hacer por wmi, pero con wmiexplorer no encuentro ninguna referencia al estado de las tareas programadas, he visto win32jobobjetstatus, pero no aparece nada dentro.
saludos y gracias…
Chema replied 4 years ago 3 Members · 7 Replies -
7 Replies
-
::
prueba esto:
Set objService = GetObject(“winmgmts:\” & strComputer)
Set objNewJob = objService.Get(“Win32_ScheduledJob”)Set colScheduledJobs = objService.ExecQuery(“SELECT * FROM Win32_ScheduledJob”)
For Each objJob in colScheduledJobs
Wscript.Echo ( “Command: ” & objJob.Command & vbCRLF _
& “Days Of Week: ” & objJob.DaysOfWeek & vbCRLF _
& “Interact with Desktop: ” & objJob.InteractWithDesktop & vbCRLF _
& “Job ID: ” & objJob.JobID & vbCRLF _
& “Job Status: ” & objJob.JobStatus & vbCRLF _
& “Run Repeatedly: ” & objJob.RunRepeatedly & vbCRLF _
& “Start Time: ” & objJob.StartTime )
Next -
::
hola muchas gracias por tu rapida respuesta,
aunque aun no la entiendo muy bien, por ejemplo, parto de este modulo (controla el stado de la base de datos)
module_begin
module_name mysql_Status
module_type generic_data_string
module_wmiquery select State from Win32_Service where Name = “mysql”
module_wmicolumn State
module_endEl codigo que incluyes parece visual basic, por lo cual imagino que no se podra poner directamente sobre la definicion del modulo (escrito en el ejemplo). Tengo que releerme los manuales 🙂
Por otro lado, en el codigo que pones ¿donde haces referencia a la tarea en concreto que queremos monitorizar?
Un saludo, y mil gracias de nuevo..
-
::
vale, pregunta:
cuando te refieres a “tarea”, es una tarea programada “AT” (panel de controltareas programadas) o es un servicio de windows (panel de controlherramientas administrativasservicios)
me explico, eso que has puesto tu: Win32_Service …. hace referencia a los servicios de windows, digase mysql, pandora FMS agent, wuauserv (Actualizaciones automáticas)
y lo que yo me referÃa era a lo otro, las tareas programadas, ejecutar una acción o programa a determinada hora y fecha.
son cosas diferentes.
dime exactamente lo que quieres y te podré ayudar mejor.
-
::
sisi tienes razon, tareas programadas del programador de tareas..
yo puse el ejemplo de un modulo que monitorizaba un servicio que no tiene nada que ver, pero solo era un ejemplo de un modulo cualquiera.
He estado investigando un poco mas y creo que ya lo tengo mas claro, el modulo que yo puse de ejemplo son para consultas wmi, hay que hacer un modulo para ejecutar vbs.
Por cierto he estado inspeccionado w32_schedulejobs con wmi explorer, y solo me aparececen las tareas que se han creado con AT (como por ejemplo la que crea el agente de pandora), pero las tareas que se crean con el asistente no me aparecen, en particular a mi lo que me interesa es monitorizar que las copias de seguridad se estan haciendo bien.
Un saludo y gracias..
PD: El foro me va fatal, en toda la mañana apenas he conseguido que me salga la pagina un par de veces, ahora parece que va algo mejor.
-
::
bueno, te cuento lo que he hecho:
en pandora_agent.conf añadi lo siguiente:
module_begin
module_name tareas
module_type generic_data_string
module_exec cscript “%ProgramFiles%pandora_agentutiltareas.vbs”
module_description Estado de las tareas
module_enden tareas.vbs puse: (y este fichero lo puse en el directorio util)
Set objService = GetObject(“winmgmts:\” & strComputer)
Set objNewJob = objService.Get(“Win32_ScheduledJob”)Set colScheduledJobs = objService.ExecQuery(“SELECT * FROM Win32_ScheduledJob”)
For Each objJob in colScheduledJobs
Wscript.Echo ( “Command: ” & objJob.Command & vbCRLF _
 & “Days Of Week: ” & objJob.DaysOfWeek & vbCRLF _
 & “Interact with Desktop: ” & objJob.InteractWithDesktop & vbCRLF _
 & “Job ID: ” & objJob.JobID & vbCRLF _
 & “Job Status: ” & objJob.JobStatus & vbCRLF _
 & “Run Repeatedly: ” & objJob.RunRepeatedly & vbCRLF _
 & “Start Time: ” & objJob.StartTime )
Nexty este es el resultado que obtengo:
aki hay algo raro 😉
-
::
Bueno, al final lo he hecho de otra forma, ya que el vbs que me pusiste al ejecutarlo con cscript no me mostraba las tareas creadas con el asistente.
Seguramente se pueda mejorar bastante, pero al menos me funciona. Seria algo asi:
module_begin
module_name Backup_Status
module_type generic_data_string
module_exec dir “e: /tw” | grep “backup”
module_description Estado de la copia de seguridad
module_endMe mostraria la fecha del ultimo backup, ya que el destino es el fichero backup. Lo que no se como hacer es para que se ponga en rojo si han pasado varios dias sin que la copia se actualize.
-
::
Bueno, al final lo he hecho de otra forma, ya que el vbs que me pusiste al ejecutarlo con cscript no me mostraba las tareas creadas con el asistente.
Seguramente se pueda mejorar bastante, pero al menos me funciona. Seria algo asi:
module_begin
module_name Backup_Status
module_type generic_data_string
module_exec dir “e: /tw” | grep “backup”
module_description Estado de la copia de seguridad
module_endMe mostraria la fecha del ultimo backup, ya que el destino es el fichero backup. Lo que no se como hacer es para que se ponga en rojo si han pasado varios dias sin que la copia se actualize.
 Buenas Alki, teniendo la misma necesidad que vosotros al monitorizar una tarea del programador de tareas de microsoft, he visto vuestros comentarios.
Os comento como he podido resolver, para mi necesidad, este problema.
Lo primero que he realizado es un script .bat donde consulto una tarea especifica.
Después, he creado un módulo donde ejecuto dicho script que me devuelve los valores que necesito.Espero que aun os pueda servir de utilidad, aunque haya llegado tarde a este hilo.
Un saludo.
############################
@echo off
schtasks /v |grep “copias”|gawk “{print($10)}” > c:resultado_copia.txt
rem $10 — PUEDE SER VARIABLE, DEPENDIENDO DEL SISTEMA
rem copias — ES EL NOMBRE DE LA TAREA
rem resultado_copia.txt — USO EL FICHERO PARA REALIZARLE UN POST TRATAMIENTO A LOS RESULTADOS DEVUELTOS.FOR /F “delims=·” %%A IN (c:resultado_copia.txt) DO CALL:Tratar “%%A”
rem SI DEVUELVE 267009 ES QUE LA TAREA SE ENCUENTRA EN EJECUCION
IF %Reg%==267009 (
goto :EnProceso)
rem SI DEVUELVE 0 ES QUE LA TAREA SE REALIZO CORRECTAMENTE
IF %Reg%==0 (
goto Correcto
)rem SI DEVUELVE UN VALOS MAYOR QUE 0 ES QUE HA HABIDO ALGUN PROBLEMA.
IF %Reg% GTR 0 (
goto :Fallo
)goto :exit
:EnProceso
echo En Proceso …
del c:resultado_copia.txt
goto :exit:Fallo
echo Fallo… Revisar copia!
del c:resultado_copia.txt
goto :exit:Correcto
echo Correcto.
del c:resultado_copia.txt
goto :exit:Tratar
rem aquà se procesa cada lÃnea del archivo
 SET Reg=%~1
Â
:exit