Script shell test plage de port séquentielle

Fermé
ai - 30 août 2011 à 22:40
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 31 août 2011 à 18:45
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 ?







A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 416
Modifié par zipe31 le 31/08/2011 à 08:10
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.
1
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.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 416
31 août 2011 à 18:45
Euh... t'as bien enlevé le "echo" devant la commande au moins ???
0