Créer un script shell pour obtenir les mac d'un switch cisco

Fermé
marlyse - Modifié par marlyse le 5/06/2013 à 15:36
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 7 juin 2013 à 21:32
Bonjour,


j'aimerais que l'on m'aide à créer un script qui va générer un fichier .txt contenant les adresses mac de chaque interface et ce script devra utiliser un fichier .txt qui contient les adresses IP des switchs.

Pour le moment j'ai créer un fichier base.txt ou j'ai saisie:

128.1.30.112

et j'ai saisie dans mon script scipt.sh:

#!/bin/bash
adresse='cut -d , -f 1 base.txt'

je ne sais pas comment insérer dans mon script la commande show mac address-table pour qu'il la saisisse sur mon switch.

Merci d'avance pour votre aide
A voir également:

5 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
7 juin 2013 à 10:05
Et depuis linux, comment te connectes-tu à tes switch ? Avec telnet, ssh, ou autre chose ? Dans ce cas il faut adapter la commande ssh par une commande telnet qui prend en paramètre le login, le hostname et la commande à lancer. Idéalement il vaut mieux éviter d'avoir le mot de passe en clair quelque part (dans le script ou dans ton fichier avec les adresses IP) et c'est pourquoi j'avais parlé de clé ssh dans mon précédent message.

Si ton switch ne propose pas de commande comme grep, tu peux au pire rapatrier le résultat complet de "show mac address-table" avec ton script et ensuite traiter cette chaîne avec grep et cut comme on a vu.

s=$(ssh root@$address "show mac address-table")
echo $s | egrep "(STATIC|DYNAMIC)" | cut -d" " -f2


Bonne chance
2
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
6 juin 2013 à 21:21
Comment te connectes-tu à tes routeurs ?
Quelle suite de commandes lanceraît tu sur tes routers pour récupérer les adresses MAC ?
Peux-tu nous copier coller un exemple de résultat de commande pour qu'on voit comment extraire la valeur qui t'intéresse ?

Suppose que par exemple ce soit comme sous linux la commande "/sbin/ifconfig -a" :

(mando@silk) (~) $ /sbin/ifconfig -a
eth0      Link encap:Ethernet  HWaddr 12:34:56:78:90:ab 
          inet adr:192.168.1.18  Bcast:192.168.1.255  Masque:255.255.255.0
...


Dans ce cas sous linux pour extraire les adresses MAC on écrirait un truc du genre :

/sbin/ifconfig | grep HWaddr | cut -d" " -f1,11


Ensuite supposons que tu te connectes à ces machines via ssh et supposons que tu aies installé une clé ssh sur chacune de ces machines pour éviter d'avoir à taper chaque mot de passe.
http://prendreuncafe.com/blog/post/2005/08/29/262-installer-sa-cle-ssh-sur-un-serveur-distant

Si ton script lit un fichier qui contient une IP par ligne tu peux écrire un truc et que la commande est par exemple de ce genre :

toto.sh

#!/bin/sh

addresses="base.txt"

for address in $(cat addresses)
do
  echo "Router $address"
  ssh root@$address /sbin/ifconfig | grep HWaddr | cut -d" " -f1,11
done


Ensuite il suffit de donner les droits en exécution à ce script et de le lancer :

chmod a+x toto.sh
./toto.sh


Bonne chance
0
Bonjour mamiemando,

tout d'abord merci beaucoup pour ton aide et pour répondre à tes questions en ce moment je dois tester le script sur une maquette avant de le déployer sur le réseaux qui compte environs une centaines de switchs. J'ai un switch cisco 2950 qui possède un vlan 10 et ce vlan à l'adresse IP 192.168.30.112, le port 1 du switch est en mode accès vers le vlan 10 et mon poste est relier à ce port avec l'adresse 192.168.30.110. Il faut que dans mon script je définisse le login de l'utilisateur et le mot de passe afin d'accéder au switch. La commande à saisir par le script est "show mac address-table" afin d'avoir les adresses mac de chaque interface par rapport à l'adresse IP du switch qui est dans le fichier base.txt. Le retour que je veux est que dans un fichier j'ai l'adresse IP du switch avec son adresse mac. Voici le retour de la commande:

#show mac address-table
Mac Address Table
-------------------------------------------

Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0007.eb16.8ac0 STATIC CPU
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0100.0cdd.dddd STATIC CPU
10 00a0.24ac.4268 DYNAMIC Fa0/1
Total Mac Addresses for this criterion: 5
0
J'ai le choix c'est à moi de choisir si je veux utiliser le ssh ou le telnet mais je préfère utiliser le ssh car par défaut sur mon switch j'ai interdit les connexions telnet. Quand j'arrive sur mon switch directement il me demande mon login et mon mot de passe et ensuite exécuter ma commande pour afficher la table mac du switch. Je vais tester ce que tu m'as dit et je te dirais si j'y suis arrivé.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
7 juin 2013 à 21:32
Oui ssh est un meilleur choix et de loin. Et normalement la syntaxe que je t'ai indiquée devrait marcher.
0