Configuration et exécution de JsN


Exécution

JsN.exe <chemin_vers_config.json>

Exemples :

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

Format de configuration JSON

{
  "scriptfile": "./mon_script.js",
  "arg": {
    "key1": "valeur1",
    "key2": 42,
    "key3": true,
    "nested": {
      "sub": "valeur"
    }
  }
}
Champ Type Description
scriptfile chaîne Chemin vers le fichier JS (relatif au dossier de configuration ou absolu)
arg objet Données arbitraires disponibles dans le script sous le nom arg

Accéder à arg dans un script

Tout le contenu de "arg" est passé en JS en tant qu'objet global arg :

Configuration :

{
  "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

Chemins dans scriptfile

Le chemin dans scriptfile peut être :

Format Exemple Comportement
Relatif "./script.js" Relatif au dossier de configuration
Absolu "C:\\scripts\\run.js" Chemin absolu

Recommandation : Gardez la configuration et le script dans le même dossier et utilisez "./script.js".


Structure de projet

Organisation de fichiers recommandée :

mon-projet/
├── config.json        ← configuration (passée à JsN.exe)
├── script.js          ← script principal
└── lib/
    └── helpers.js     ← fonctions d'aide (si nécessaire)

Configurations multiples pour différentes tâches

Vous pouvez avoir plusieurs configurations pour un même script avec des paramètres différents :

monitor/
├── monitor.js                  ← script partagé
├── monitor-production.json     ← configuration pour la production
└── monitor-staging.json        ← configuration pour le 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/..."
  }
}

Exécution planifiée (Planificateur de tâches)

Pour une exécution périodique, utilisez le Planificateur de tâches Windows :

  1. Ouvrez le Planificateur de tâches (taskschd.msc)
  2. Créez une tâche → Actions → Nouvelle
  3. Programme : C:\tools\JsN\JsN.exe
  4. Arguments : C:\scripts\monitor\config.json
  5. Configurez le déclencheur (toutes les N minutes, au démarrage, etc.)

Ou via 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

Exécution en tant qu'administrateur

Les fonctions svc_* nécessitent des privilèges d'administrateur. Méthodes d'exécution :

Via un raccourci : Clic droit → Exécuter en tant qu'administrateur.

Via le Planificateur de tâches : Lors de la création de la tâche → Exécuter avec les privilèges les plus élevés.

Via PowerShell :

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

Codes de sortie de JsN.exe

Code Signification
0 Script exécuté avec succès
1 Échec du chargement de la configuration ou du fichier JS