Script shell test plage de port séquentielle
ai
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
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
-
Salut,
$ 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.