Configuración y Ejecución de JsN


Ejecución

JsN.exe <ruta_al_config.json>

Ejemplos:

JsN.exe config.json
JsN.exe "C:\scripts\monitor.json"
JsN.exe TCa\CaMonitor.json

Formato de configuración JSON

{
  "scriptfile": "./my_script.js",
  "arg": {
    "key1": "value1",
    "key2": 42,
    "key3": true,
    "nested": {
      "sub": "value"
    }
  }
}
Campo Tipo Descripción
scriptfile string Ruta al archivo JS (relativa a la carpeta de configuración o absoluta)
arg object Datos arbitrarios disponibles en el script como arg

Acceso a arg en un script

Todo el contenido de "arg" se pasa a JS como un objeto global arg:

Configuración:

{
  "scriptfile": "./run.js",
  "arg": {
    "host": "smtp.office365.com",
    "port": 587,
    "recipients": ["admin@example.com", "ops@example.com"],
    "debug": false
  }
}

Script run.js:

console.log(arg.host);               // "smtp.office365.com"
console.log(arg.port);               // 587
console.log(arg.recipients[0]);      // "admin@example.com"
console.log(arg.debug);              // false

Rutas en scriptfile

La ruta en scriptfile puede ser:

Formato Ejemplo Comportamiento
Relativa "./script.js" Relativa a la carpeta de configuración
Absoluta "C:\\scripts\\run.js" Ruta absoluta

Recomendación: Mantén la configuración y el script en la misma carpeta y usa "./script.js".


Estructura del proyecto

Organización de archivos recomendada:

mi-proyecto/
├── config.json        ← configuración (se pasa a JsN.exe)
├── script.js          ← script principal
└── lib/
    └── helpers.js     ← funciones auxiliares (si son necesarias)

Múltiples configuraciones para diferentes tareas

Puedes tener múltiples configuraciones para un mismo script con diferentes parámetros:

monitor/
├── monitor.js                  ← script compartido
├── monitor-production.json     ← configuración para producción
└── monitor-staging.json        ← configuración para staging

monitor-production.json:

{
  "scriptfile": "./monitor.js",
  "arg": {
    "service": "MyApp_Production",
    "process": "myapp.exe",
    "notify_url": "https://hooks.slack.com/services/PROD/..."
  }
}

monitor-staging.json:

{
  "scriptfile": "./monitor.js",
  "arg": {
    "service": "MyApp_Staging",
    "process": "myapp.exe",
    "notify_url": "https://hooks.slack.com/services/STAG/..."
  }
}

Ejecución programada (Programador de tareas)

Para ejecución periódica usa el Programador de tareas de Windows:

  1. Abre el Programador de tareas (taskschd.msc)
  2. Crear tarea → Acciones → Nueva
  3. Programa: C:\tools\JsN\JsN.exe
  4. Argumentos: C:\scripts\monitor\config.json
  5. Configurar el desencadenador (cada N minutos, al inicio, etc.)

O vía PowerShell:

$action = New-ScheduledTaskAction `
    -Execute "C:\tools\JsN\JsN.exe" `
    -Argument "C:\scripts\monitor\config.json"

$trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 5) -Once -At (Get-Date)

Register-ScheduledTask -TaskName "JsN-Monitor" -Action $action -Trigger $trigger -RunLevel Highest

Ejecución como administrador

Las funciones svc_* requieren privilegios de administrador. Formas de ejecutar:

Vía acceso directo: Clic derecho → Ejecutar como administrador.

Vía Programador de tareas: Al crear la tarea → Ejecutar con los privilegios más altos.

Vía PowerShell:

Start-Process "JsN.exe" -ArgumentList "config.json" -Verb RunAs

Códigos de salida de JsN.exe

Código Significado
0 Script ejecutado con éxito
1 Error al cargar la configuración o el archivo JS