#1 Le 03/08/2011, à 12:34
- mangue
[Résolu] Scritp bash pour config switchs
Bonjour,
Je dois remplacer un parc de switch assez important. Du coup, au lieu de me taper toutes les confs à la main, je me suis dit, tien si je faisais un script...Bien évidement, ca ne marche pas.
Je travaille sur deux fichier, le premier rassemble les infos pour les variables, contenant un id, une ville, et un subnet par ligne :
Code : Bash - Sélectionner
870,Paris,172.16.20
871,Marseille,172.16.40
Le deuxième fichier est le script en lui-même :
Code : Bash - Sélectionner
#!/bin/bash
nom=`cut -d , -f 2 /home/mangue/Réseaux/Script_fichier_routeurs/liste.txt`
subnet=`cut -d , -f 3 /home/mangue/Réseaux/Script_fichier_routeurs/liste.txt`
id=`cut -d , -f 1 /home/mangue/Réseaux/Script_fichier_routeurs/liste.txt`
echo "spanning-tree max-age 6
spanning-tree forward-time 8
interface range ethernet e(1-24)
switchport mode access
exit
interface range ethernet g(1-3)
switchport mode general
exit
vlan database
vlan 3,100
exit
interface range ethernet e(1-16)
switchport access vlan 3
exit
interface range ethernet g(1-3)
switchport general allowed vlan add 3
exit
interface range ethernet e(17-24)
switchport access vlan 100
exit
interface range ethernet g(1-3)
switchport general allowed vlan add 100
exit
interface vlan 3
name DATA
exit
interface vlan 100
name VOIX
exit
voice vlan oui-table add 0001e3 Siemens_AG_phone________
voice vlan oui-table add 00036b Cisco_phone_____________
voice vlan oui-table add 00096e Avaya___________________
voice vlan oui-table add 000fe2 H3C_Aolynk______________
voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
voice vlan oui-table add 00d01e Pingtel_phone___________
voice vlan oui-table add 00e075 Polycom/Veritel_phone___
voice vlan oui-table add 00e0bb 3Com_phone______________
interface vlan 3
ip address $subnet.5 255.255.255.128
exit
ip default-gateway $subnet.1
interface vlan 1
no ip address dhcp
exit
bonjour service enable csco-sb
bonjour service enable http
bonjour service enable https
bonjour service enable ssh
bonjour service enable telnet
hostname "$nom"SW$id
username cisco password e69867ca7d5a7b0ab60a2a61e7b791c106f7bf64 level 15 encrypted
no snmp-server enable
snmp-server location ""$nom"_Mag"
snmp-server contact ""Support informatique""" > /home/mangue/Réseaux/Script_fichier_routeurs/"$id"_"$nom$"
done
Le script fonctionne bien tant que je n'ai qu'une seule ligne dans le fichier source, mais dès que je passe à plus de deux lignes , plus rien ne fonctionne.
J'ai également essayé avec une boucle while, mais au lieu de faire une conf par ligne, le script essaye de mettre toutes les informations dans la même conf...
Mon script est sûrement très crade, mais j'ai fait avec les connaissnace que j'avais, et je vous demande humblement votre aide, parceque je ne comprend pas comment fixer ce problème...
Merci à vous !
Mangue
Dernière modification par mangue (Le 03/08/2011, à 15:19)
ASUS G75VW-T1042V, Toshiba Qosmio et Samsung T-230 LinuxMint 14-15 64bits
Serveur dédié Debian 6.0
Mon BlogNote : http://www.adminreseaux.net
S'il n'y a pas d'accent dans mon message, c'est que je l'ai écris du boulot, désolé.
Hors ligne
#2 Le 03/08/2011, à 13:01
- redo_fr
Re : [Résolu] Scritp bash pour config switchs
Salut,
si tu n'as pas d'espaces dans tes parametres, tu peux utiliser une boucle 'for'
for ligne in `cat /home/mangue/Réseaux/Script_fichier_routeurs/liste.txt`
do
echo "${ligne}" | awk -F, '{print $1" "$2" "$3}' | while read id nom subnet
do
echo $subnet "de" $nom "($id)"
done
done
Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -
Hors ligne
#3 Le 03/08/2011, à 13:26
- redo_fr
Re : [Résolu] Scritp bash pour config switchs
@HP
Heu... Je peux savoir à qui tu t'adresses de cette manière?...
Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -
Hors ligne
#4 Le 03/08/2011, à 14:56
- mangue
Re : [Résolu] Scritp bash pour config switchs
Edit :
Ok c'est bon désolé, j'ai parlé avant de tester...
Donc j'ai ajouté mon bloc de conf, les fichiers sont bien créés, mais sans rien dedans...
J'ai fait un cat [conf
conf
conf] >> non du fichier
C'est ma redirection qui est foireuse ?
Dernière modification par mangue (Le 03/08/2011, à 15:07)
ASUS G75VW-T1042V, Toshiba Qosmio et Samsung T-230 LinuxMint 14-15 64bits
Serveur dédié Debian 6.0
Mon BlogNote : http://www.adminreseaux.net
S'il n'y a pas d'accent dans mon message, c'est que je l'ai écris du boulot, désolé.
Hors ligne
#5 Le 03/08/2011, à 15:18
- mangue
Re : [Résolu] Scritp bash pour config switchs
Bon eh bien en fait, merci beaucoup, ca fonctionne nickel !
Merci Redo !
ASUS G75VW-T1042V, Toshiba Qosmio et Samsung T-230 LinuxMint 14-15 64bits
Serveur dédié Debian 6.0
Mon BlogNote : http://www.adminreseaux.net
S'il n'y a pas d'accent dans mon message, c'est que je l'ai écris du boulot, désolé.
Hors ligne
#6 Le 03/08/2011, à 15:20
- redo_fr
Re : [Résolu] Scritp bash pour config switchs
Tu peux aussi utiliser un "here script" à la place de ta looooonnnngggguuuuue chaîne ^_^
for ligne in `cat /home/mangue/Réseaux/Script_fichier_routeurs/liste.txt`
do
echo "${ligne}" | awk -F, '{print $1" "$2" "$3}' | while read id nom subnet
do
cat << !EOF! > "${id}_${nom}"
interface vlan 3
ip address ${subnet}.5 255.255.255.128
exit
ip default-gateway ${subnet}.1
interface vlan 1
no ip address dhcp
hostname "${nom}"SW${id}
exit
!EOF!
done
done
Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -
Hors ligne
#7 Le 03/08/2011, à 19:07
- Levi59
Re : [Résolu] Scritp bash pour config switchs
Useless use of cat! (pour une fois que je peux le sortir! ^^)
OLDIFS=$IFS
IFS=","
while read id nom subnet
do echo $id-$nom-$subnet
done < fichier.txt
IFS=$OLDIFS
Hors ligne
#8 Le 04/08/2011, à 08:16
- mangue
Re : [Résolu] Scritp bash pour config switchs
Merci à vous deux
ASUS G75VW-T1042V, Toshiba Qosmio et Samsung T-230 LinuxMint 14-15 64bits
Serveur dédié Debian 6.0
Mon BlogNote : http://www.adminreseaux.net
S'il n'y a pas d'accent dans mon message, c'est que je l'ai écris du boulot, désolé.
Hors ligne