Script de migration de fichier (sed,awk....)

Résolu/Fermé
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015 - 8 avril 2014 à 17:41
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 13 avril 2014 à 11:56
Bonjour,

Pour des besoins technique je dois écrire un script qui va convertir un fichier de configuration dhcp en un fichier au format LDIF, mon script va dans un premier temps parcourir le fichier dhcp et récupérer les données ,essentiellement les adresses des sous réseaux, la plage d'adresse et les machines hote "host" (définis par un nom et une adresse MAC) de chacuns .

Je souhaiterais avoir vos avis concernant la structure de données la plus appropriée qui me permettrait de stocker ses données de façon cohérente .

fichier dhcp

subnet 1 {
address router xxx.xxx.xxx.xxx;
rang xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy
rang zzz.zzz.zzz.zzz aaa.aaa.aaa.aaa
rang bbb.bbb.bbb.bbb ccc.ccc.ccc.ccc

host name1 {

hardware ethernet AA:BB:CC:DD:EE:FF;
fixed-address xxx.xxx.xxx.xxx;
}
host name 2 {

hardware ethernet AA:BB:CC:DD:EE:FF;
fixed-address xxx.xxx.xxx.xxx;
}
......

host name N {

hardware ethernet AA:BB:CC:DD:EE:FF;
fixed-address xxx.xxx.xxx.xxx;
}
}
.......

subnet N {
.
.
.
.
}
}

Comme le nombre de rang (plage d'adresse) et de Host sont variables d'un Subnet à un autre j'ai vite abandonné l'idée d'utiliser un fichier CSV (pourtant ça m'aurait faciliter la vie pour la suite...). N'hésitez pas à me faire de vos suggéstions.

Je vous remercie d'avance .

A voir également:

3 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
8 avril 2014 à 20:25
Vu qu'un subnet peut contenir plusieurs hostname, c'est un peu artificiel mais pourquoi pas. Car en gros tu vas avoir un truc du genre :

subnet1 host1a ...
subnet1 host1b ...
subnet1 host1c ...
subnet2 host2a ...
subnet2 host2b ...

Du coup tu as pas mal de redondance et un tel schéma ne permet pas de stocker une information relative à un subnet (en l'occurrence rang, ...). Ou alors tu seras obligé d'avoir des lignes avec des formats différents selon que tu parles d'un subnet ou d'un hostname.

Bref c'est un peu compliqué pour être honnête.

Il faudrait comprendre un peu mieux tes besoins pour répondre correctement à cette question. Si c'est juste une migration, je doute que le format de configuration de ton serveur dhcp ait (1) changé (2) changé au point de nécessiter quelque chose de si compliqué.

Maintenant si tu tiens vraiment à faire un tel script, la bonne manière de faire serait de passer par une structure de donnée plus évoluée, par exemple un fichier ldif, json, xmlrpc, ou carrément une base de données.

Personnellement j'opterais pour un script python avec une serialisation en json (pour sauver le fichier actuel) et une déserialisation (pour déployer le nouveau fichier), éventuellement en en profitant pour adapter le format du fichier si la syntaxe a évolué. En effet le json permet de stocker un dictionnaire (et des dictionnaires imbriquées les uns dans les autres) donc c'est un format (parmi tant d'autres) qui peut coller :
https://docs.python.org/2/library/json.html

À voir ensuite dans quelle mesure le format ldif peut également faire l'affaire.
https://www.python-ldap.org/en/python-ldap-3.2.0/reference/ldif.html

Bonne chance
0
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015
11 avril 2014 à 14:53
Tout d'abord je te remercie pour ta réponse et surtout ta réactivité . J'ai abandonné l'idée d'écrire mon script en Shell .... Je me suis réorienté vers du PHP .....
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
13 avril 2014 à 11:56
Ça marche, bonne continuation !
0