[Pas résolu !] Problème de script Bash dans script Perl

Problème de script Bash dans script Perl [Pas résolu !] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-01-2008 à 12:33:22    

Bonjour !
 
J'ai un petit soucis assez genant, je suis en train creer un plugin pour Nagios, et pour cela je dois utiliser une commande bash dans mon script. J'utilise donc la commande system. Mais cette commande me balance un retour à la ligne indésirable, et lorsque j'exécute le script... ba ca coince !
 

Code :
  1. system "./check_tcp 192.168.1.1 -p 630 -s $mot -e $password";


 
Le résultat:
 

Code :
  1. root@linux:/usr/lib/nagios/plugins# ./check_blabla
  2. ./check_tcp 192.168.1.1 -p 630 -s NnB2b2FxdlV4SZ5i1lE5936KegI5/vs=
  3. -e cHZvYXF2
  4. TCP OK - 0,000 second response time on port 65530|time=0,000348s;0,000000;0,000000;0,000000;10,000000
  5. sh: -e: not found


 
Help ! Comment virer ce $#1*$ de retour à la ligne ?
 
Merci !

Message cité 1 fois
Message édité par iwak le 03-01-2008 à 15:55:36
Reply

Marsh Posté le 03-01-2008 à 12:33:22   

Reply

Marsh Posté le 03-01-2008 à 13:16:54    

ça ne vient pas de $mot par hasard ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 03-01-2008 à 13:35:29    

Il n'y a pas de retour à la ligne dans $mot pourtant :/

Reply

Marsh Posté le 03-01-2008 à 14:07:36    

Résolu ! un chomp($mot) et ca roule ! :p

Reply

Marsh Posté le 03-01-2008 à 14:50:31    

c'est crade de faire un plugin nagios comme ça, en passant


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 03-01-2008 à 15:56:17    

En fait mon problème n'est pas résolu... le "-e cHZvYXF2" n'est pas pris en compte...
 
@black_lord: en quoi c'est crade ?

Reply

Marsh Posté le 03-01-2008 à 15:59:25    

iwak a écrit :

Code :
  1. system "./check_tcp 192.168.1.1 -p 630 -s $mot -e $password";


De manière générale, dans ce genre de cas il est préférable d'utiliser la version multi-arguments de system:

Code :
  1. my $ret = system ("./check_tcp", "192.168.1.1", "-p", "630", "-s", $mot, "-e", $password);

Comme ça tu n'as pas de problèmes si $mot et $password contiennent des espaces


---------------
TriScale innov
Reply

Marsh Posté le 03-01-2008 à 16:21:58    

1000 merci ! Ca marche !

Reply

Marsh Posté le 04-01-2008 à 09:32:05    

franceso a écrit :

Comme ça tu n'as pas de problèmes si $mot et $password contiennent des espaces


Et en plus c'est plus efficace puisque Perl n'a pas besoin de fork/exec un shell.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed