Script shell test plage de port séquentielle
Bonjour,
je suis débutant en Shell et j'ai un script avec deux variable comme suit
cat fic.txt
Machine1 5000 5199
Machine2 3100 3190
Machine3 5000 5999
etc..
var1=cat fic.txt |awk print '{ print $1 }'
var2=cat fic.txt |awk print '{ print $2 , $3 }'
echo $var1
Machine1
Machine2
Machine3
echo $var2
5000 5199
3100 3190
5000 5999
je souhaite automatiser un test de connexion avec check_tcp (module Nagios) dont la syntaxe est ./check_tcp -H {HOSTNAME} p {PORT}entre machine1 et toutes les plages de ports de 5000 à 5199, machine2 de 3100 à 3190 etc...
je sais qu'il existe la commande seq mais je ne saurait l'utiliser dans une bouche for quelqu'un as-til une idée svp ?
je suis débutant en Shell et j'ai un script avec deux variable comme suit
cat fic.txt
Machine1 5000 5199
Machine2 3100 3190
Machine3 5000 5999
etc..
var1=cat fic.txt |awk print '{ print $1 }'
var2=cat fic.txt |awk print '{ print $2 , $3 }'
echo $var1
Machine1
Machine2
Machine3
echo $var2
5000 5199
3100 3190
5000 5999
je souhaite automatiser un test de connexion avec check_tcp (module Nagios) dont la syntaxe est ./check_tcp -H {HOSTNAME} p {PORT}entre machine1 et toutes les plages de ports de 5000 à 5199, machine2 de 3100 à 3190 etc...
je sais qu'il existe la commande seq mais je ne saurait l'utiliser dans une bouche for quelqu'un as-til une idée svp ?
2 réponses
-
ContributeurSalut,
$ ls fich.txt foo.sh* $ cat fich.txt Machine1 5000 5005 Machine2 3100 3103 Machine3 5000 5002 $ cat foo.sh #! /bin/bash while read hostnam p1 p2 do echo for port in $(seq ${p1} ${p2}) do echo "./check_tcp -H ${hostnam} -p ${port}" done done < fich.txt $ ./foo.sh ./check_tcp -H Machine1 -p 5000 ./check_tcp -H Machine1 -p 5001 ./check_tcp -H Machine1 -p 5002 ./check_tcp -H Machine1 -p 5003 ./check_tcp -H Machine1 -p 5004 ./check_tcp -H Machine1 -p 5005 ./check_tcp -H Machine2 -p 3100 ./check_tcp -H Machine2 -p 3101 ./check_tcp -H Machine2 -p 3102 ./check_tcp -H Machine2 -p 3103 ./check_tcp -H Machine3 -p 5000 ./check_tcp -H Machine3 -p 5001 ./check_tcp -H Machine3 -p 5002 $
;-))
Zen my nuggets ;-)
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. -
Merci beaucoup ton aide cela fonctionne parfaitement,
Par contre j'aimerai avoir le ./check_tcp -H Machine1 -p 5001 ainsi que le résultat de la commande sur la même ligne, de cette façon
./check_tcp -H Machine1 -p 5001 : Connexion refusée
Merci d'avance.