2016-07-27 2 views
-2

Je cours un script Perl de Nagios pour vérifier certains fichiers pour certaines caractéristiques sur une machine Windows. Quand je lance le script de Nagios, il répond par un résultat de:Perl Erreur de retour pour la commande ls -l

erreur INCONNU - exécution de LANG = C ls -l a donné lieu à une erreur 32512 -

Mon code est from this GitHub avec un seul modification de la ligne 168 donc je peux l'utiliser avec des fenêtres:

use lib 'C$\Progra~1\Nagios\NRDS_Win\plugins'; 

la chose étrange est le programme génère en fait le résultat attendu de la ligne de commande sur la machine windows.

Voici la commande:

check_files.pl -D c: \ logs -F Health.log -a '~, 300'

Voici un exemple:

CRITIQUE - Health.log est 10703 (plus de 300) secondes de - 1 fichiers Health.log trouvé

I modifié ligne qui définit LANG=C ls -l dans le code, mais maintenant je viens d'obtenir:

erreur INCONNU - ne pouvait pas exécuter ls -l - Aucun fichier ou répertoire

Répondre

2

ls est commande unix et par par défaut il n'y a pas une telle commande dans Windows.

Si vous en avez besoin, vous pouvez l'installer par ex. Vous devez également modifier la commande shell sur la ligne 639 de LANG=C ls -l à ls -l car dans Windows, vous ne pouvez pas définir des variables d'environnement comme cela.

+6

Même si c'était le cas, 'LANG = C ls -l' serait toujours une commande Windows invalide – ikegami

+0

'ls' se trouve dans la fenêtre et j'ai changé la ligne LANG = C pour qu'elle soit juste ls -l mais je continue get an: ERREUR INCONNUE - impossible d'exécuter ls -l - Aucun fichier ou répertoire dans nagios mais si j'exécute la même commande à partir de l'invite de commande, cela fonctionne bien – mithrix

+1

Vous devriez vérifier que 'ls' est sur le chemin depuis n'importe quel environnement Nagios est en cours d'exécution. Il peut être différent du chemin de la ligne de commande. –