IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

“scanner” le réseau en utilisant la commande “ping”


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 3
    Points : 0
    Points
    0
    Par défaut “scanner” le réseau en utilisant la commande “ping”
    Bonjour, je suis etudiant en info, simple parenthese, on nous fait faire des scripts sans avoir jamais fait de l'algorithme. Autant dire que les bases sont quasi nulles. Je veux bien apprendre mais, ce seras avec le temps.

    Revenons a ma question,

    J'ai une base de script que je doit modifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #!/bin/bash
     
    check_IP()
    {
        if [[ $1 =~ ^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$ ]] ; then
            echo "L'adresse donnée semble bien structurée comme une IPV4"
        else
            echo "L'adresse IP donnée ne semble pas être conforme au format IPV4"
            exit 1
        fi
    }
     
     
    if [ $# -eq 0 ]; then
        IFACE=`netstat -nr | awk '{print $NF}' | tail -1`
        set - `ip addr show $IFACE | grep "inet\s" | awk '{print $2}' | awk -F"/" '{print $1}'`
    fi
     
    echo "L'adresse IP donnée est $1"
     
    check_IP $1 
     
    SUBNET=`echo $1 | cut -d"." -f1-3`
    if [ $SUBNET == "" ]; then
        echo "Il doit y avoir un problème avec l'adresse IP donnée [$1]"
        echo "Je n'arrive pas à en faire un subnet ..."
        exit 1
    fi
     
    echo "Le réseau est ${SUBNET}.0"
     
    check_IP ${SUBNET}.0
     
    read -p "[enter] pour continuer"
     
    for ((i=1 ; i<256 ; i++)) ; do
        echo "ping ${SUBNET}.$i"
    done
    ceci est le script donné, a partir de celui-si je doit “scanner” le réseau en utilisant la commande “ping”
    Dans votre boucle de 0 à 255 au lieu de m’afficher “ping 192.168.1.10” vous devrez afficher uniquement les adresses IP qui sont joignables.
    Si aucune adresse IP n’est joignable alors vous devrez afficher un message d’erreur.

    Je ne voit pas du tout ce que je doit modifier...

    Merci par avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 373
    Points : 1 017
    Points
    1 017
    Par défaut
    Bonjour,

    Dans ce script il y a effectivement une boucle qui affiche le texte "ping" suivi de l'adresse IP. Au lieu d'afficher l'adresse avec la commande "echo", il faut exécuter la commande "ping" et récupérer sa valeur de retour.
    Grâce à un test "if", vous pourrez faire en sorte d'afficher l'adresse (si le ping a réussi), ou ne pas l'afficher (en cas d'échec du ping).

    Ensuite il restera le problème d'afficher un message d'erreur si aucune IP n'est joignable.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Donc, je doit modifier cette partie ?

    if [[ $1 =~ ^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$ ]] ; then
    echo "L'adresse donnée semble bien structurée comme une IPV4" ----------- ici remplacer cette phrase par echo (ping$)???
    else
    echo "L'adresse IP donnée ne semble pas être conforme au format IPV4"
    exit 1

    Si quelqu'un peux faire les modifs, vraiment je comprends 0. Une fois modifié je pourrais voir ce qui change et quels arguments ou variables utiliséés...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 373
    Points : 1 017
    Points
    1 017
    Par défaut
    Non pas du tout. Ce "if" présent dans la fonction check_IP permet de savoir si le paramètre est bien une adresse IP ou pas et affiche un message selon le cas. Il n'y a pas à y toucher.

    D'ailleurs dans l'énoncé il est bien indiqué que c'est le contenu de la boucle qu'il faut modifier pour n'afficher que les adresses IP joignables. La boucle est réalisée avec l'instruction "for", à la fin du script.

    Malheureusement personne ne fera les modifications à votre place.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Ok merci, je vais voir du coup comment faire ca...

Discussions similaires

  1. Scripts shell linux
    Par ngthurel dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 14/05/2013, 22h26
  2. Script Shell Linux
    Par chercheur111 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 29/03/2012, 17h37
  3. script shell linux à traduire sous windows
    Par macfly95 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 04/02/2011, 19h16
  4. Conversion d'un script shell Linux vers un batch Windows
    Par captu dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 19/01/2010, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo