Gyakran felmerülő téma errefelé, hogy mekkora idióta formátum az XML és le kéne lőni, aki kitalálta, meg milyen dolog már konfigurációra használni, mennyivel jobb a [insert random formátum, amit egész pontosan egy darab alkalmazás (amit konfigurál) kezel és egyébként lehet nekiesni és stringként kezelni]
Mai feladat: opnsense konfigból kikukázni a static DHCP mappingeket, az alapján eldönteni, hogy melyik MAC címnek melyik VLAN-ban a helye és ebből egy CSV-t generálni. Az opnsense egy központi XML fájlban tárolja minden konfigját, a DHCP static lease-ket speciel így:
<staticmap>
<mac>00:11:22:33:44:55</mac>
<ipaddr>10.0.23.4</ipaddr>
<hostname>itappmonrobot</hostname>
</staticmap>
Ebből kéne nekem ilyen:
00:00:22:33:44:55,tesztvlan
XML feldolgozásra természetesen az awk és a sed a legjobb, úgyhogy álljunk neki regexpet í... haha, nem xmlstarlet. Szerencsére minden VLAN-hoz egy /24 tartozik, így az IP -> Subnet -> VLAN név megfeleltetés nem nehéz, elég az elejét nézni az IP-nek.