Script shell

Bonjour,

Lorsque sur mon serveur je fais :

snmpwalk -v2c nom_communauté IP_serveur .1.3.6.1.4.1.2021.9.1.2.1

j'ai la liste des points de montage avec leurs index.

J'aimerai écrire un script shell qui lance cette commande sur une plage IP et qu'il enregistre dans un fichier .txt l'IP du serveur, les index ainsi que le nom du point de montage.

Exemple :

IP_SERVEUR

.1 -> /
.2 -> /var
.3 -> /home
...

Pouvez-vous m'aider pour écrire ce script car je ne vois pas du tout comment faire ?

Par avance merci

10 réponses

  1. Salut,

    Tu pourrais donner la sortie exacte de
    snmpwalk -v2c nom_communauté IP_serveur .1.3.6.1.4.1.2021.9.1.2.1 ?

    Histoire de voir comment est fournie l'information pour te donner un coup de main
    1. Voila c'est à peut pret ça :

      HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: Physical memory
      HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: Virtual memory
      HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Memory buffers
      HOST-RESOURCES-MIB::hrStorageDescr.7 = STRING: Cached memory
      HOST-RESOURCES-MIB::hrStorageDescr.8 = STRING: Shared memory
      HOST-RESOURCES-MIB::hrStorageDescr.10 = STRING: Swap space
      HOST-RESOURCES-MIB::hrStorageDescr.31 = STRING: /
      HOST-RESOURCES-MIB::hrStorageDescr.32 = STRING: /sys
      HOST-RESOURCES-MIB::hrStorageDescr.33 = STRING: /proc/bus/usb
      HOST-RESOURCES-MIB::hrStorageDescr.34 = STRING: /proc/sys/fs/binfmt_misc
      HOST-RESOURCES-MIB::hrStorageDescr.35 = STRING: /proc/fs/nfs
      HOST-RESOURCES-MIB::hrStorageDescr.36 = STRING: /var/lib/nfs/rpc_pipefs

      Est moi j'aimerai avoir dans un fichier l'index (.1 , .3, ... et le nom de la partition)
      1. Contributeur
        Salut,

        Essaie ça déjà, et dis-nous si la sortie te convient :

        snmpwalk -v2c nom_communauté IP_serveur .1.3.6.1.4.1.2021.9.1.2.1 | sed -n 's#[^.]*\([^ ]*\)[^:]*: \(.*\)#\1 -> \2#p'
        1. Ok je vais tester demain matin et je vous tiens au courant.

          Merci pour votre aide.
          1. Par contre ce script écrira le résultat de l'IP que j'aurai indiqué ! Mais si je veux faire une plage d'adresse IP je peux faire comment ?
            1. Contributeur
              Je suppose qu'un truc du genre devrait faire l'affaire :

              for adresse in 'ip1 ip2 ip3'
              do
              echo -e "IP_SERVEUR : ${adresse}\n\n" > "${adresse}.txt" 
              snmpwalk -v2c nom_communauté "${adresse}.txt" .1.3.6.1.4.1.2021.9.1.2.1 | sed -n 's#[^.]*\([^ ]*\)[^:]*: \(.*\)#\1 -> \2#p' >> "${adresse}.txt"
              done
          2. Ok merci beaucoup !

            Je test et je vous tiens au courant.

            Encore merci

            Bonne soirée !
            1. Bonjour,

              Alors j'ai effectué le test du script ci-dessus (Le dernier script) et le résultat me conviens.

              IP_SERVEUR : IP_DU_SERVEUR

              .1 -> Nom_partition
              ...

              Par contre lorsque je met plusieurs IP (IP1 IP2) ... le nom du fichier se nomme IP1 IP2 ... IP3.txt : est-il possible d'enregistrer sous un même nom ?

              Ensuite dans le fichier il me met seulement le résultat de la première IP

              IP_SERVEUR : IP1 IP2 ...IPN

              .1 -> /
              .2 -> /home

              ....

              Est-il possible d'avoir comme résultat

              IP_SERVEUR : IP1

              .1 -> /
              .2 -> /home

              IP_SERVEUR : IP2

              .1 -> /
              .2 -> /home

              ...

              Merci pour votre aide
              1. Contributeur
                Oups, j'avais mis des quotes en trop dans "for adresse in IP1 IP2 IP3" ;-((

                Donc essaies comme ça :

                for adresse in ip1 ip2 ip3
                do
                echo -e "IP_SERVEUR : ${adresse}\n" >> fichier_result.txt
                snmpwalk -v2c nom_communauté "${adresse}.txt" .1.3.6.1.4.1.2021.9.1.2.1 | sed -n 's#[^.]*\([^ ]*\)[^:]*: \(.*\)#\1 -> \2#p' >> fichier_result.txt
                echo -e "\n\n" >> fichier_result.txt
                done

                En gras ce qui a changé ;-))
            2. Nickel !

              Par contre si je veux m'envoyer par mail le fichier fichier_result.txt

              je dois bien mettre ça :

              mailx -s "OBJET" adressse@mail.com < fichier_result.txt ?

              Si je veux faire un mail avec un message du genre :

              Bonjour,

              Voici le résultat du snmpwalk.

              ....

              comment dois-je faire ?

              Merci
            3. Ok merci je vais regarder !

              Par contre si je veux rajouter dans mon fichier le nom du serveur (Hostname) je peux faire comment ?

              Merci
              1. Contributeur
                $ hostname > fichier.txt
                $ cat fichier.txt
                MDK-2010

                A adapter ;-))