Forum Programmation.shell Débutisme dans les Scripts

Posté par .
Étiquettes : aucune
0
29
mar.
2005
Bonjour à tous,

Je suis en train d'essayer d'écrire un script en awk pour recuperer les adresses IP contenu dans mon fichier /etc/hosts. (j'ai recupere le script sur un site et je l'ai adapté au traitement de mon fichier hosts).

J'obtiens bien une liste à l'écran de ces serveurs, mais je voudrais aussi faire un PING de chacun de ces serveurs pour vérifier leur connexion. juste après le print "Adresse IP" 1ドル.
Mais je ne connais rien à la syntaxe dans awk. Comment peut on recuperer les zones 1ドル...10ドル dans des variables pour les utiliser en appelant des programmes externes (ping en l' occurence).

Voici mon script, pouvez vous m'aider ?

Merci d'avance.


#!/usr/bin/awk -f

BEGIN {
print "Début du script"
nbComment=0
nbServeur=0
}
(/^#/ || /^$/){
nbComment++
}

{
nbServeur++
print "Adresse IP : " 1ドル
}

END {
print "Nb Lignes Traitées :" nbServeur " dont " nbComment" Lignes de commentaires."
}
  • # system

    Posté par . Évalué à 1.

    system() a l'air de correspondre a ce que tu cherches:

    http://www.parinux.org/ressources/supports-confs/awk/commandes.html(...)
  • # 2 méthodes

    Posté par . Évalué à 2.

    salut,

    En gros tu as 2 méthodes:
    - avec system:
    ret = system("ping " 1ドル)
    print "retour", ret


    - avec le pipe:
    cmd = "ping " 1ドル
    while ((cmd | getline ligne) > 0)
    print ligne
    close(cmd)

    La 1ère méthode devrait te suffire.
    un "ping -c 1 toto" te renvoit 0 si c'est ok
  • # Sans awk

    Posté par (site web personnel, Mastodon) . Évalué à 3.

    Je propose de se passer de ce awk à la syntaxe obscure, pour n'utiliser que du bon vieux bash :

    SERVEURS=`cat /etc/hosts |grep '\.1'|cut -d " " -f 1`

    for i in $SERVEURS; do
    echo -n $i
    ping -c 1 -q $i|grep 'transmitted'
    done;
  • # SUPER MERCI A TOUS

    Posté par . Évalué à 1.

    J'ai réussi grace à vous.

    D'une manière générale, comment peut on affecter à une variable de mon script, la valeur de "la zone" 1ドル de awk ?


    MaVariable = awk '{ print 1ドル }' /etc/Monfichier

    cette ligne ne fonctionne pas.
    • [^] # Re: SUPER MERCI A TOUS

      Posté par . Évalué à 1.

      Si tu veux que MaVariable contienne le résultat de ton print, il suffit d'utiliser les backticks :

      MaVariable=`awk '{ print 1ドル }' /etc/Monfichier`

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.