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 ?

2 réponses

  1. Contributeur
    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
    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
      1. Contributeur
        Euh... t'as bien enlevé le "echo" devant la commande au moins ???
        0