Script shell test plage de port séquentielle

ai -  
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 ?

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. tesk75
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Euh... t'as bien enlevé le "echo" devant la commande au moins ???
      0