Ik heb een scriptje geschreven dat ZFS pools monitort, scrubt enzovoort. Om het onderhoudsvriendelijker te maken heb ik zoveel mogelijk variabelen gebruikt, zodat die in een apart configuratiebestand kunnen worden ingesteld, en het script zelf niet gewijzigd moet worden.
Het configuratiebestand ziet er als volgt uit:
De problematische variabelen zijn de mirror disks, die volgens Bash commando's zijn. Die variabelen zijn qua naamgeving gebaseerd op de zfspools array waarin alle bestaande ZFS pools vermeld worden. Dit om configuratie te vergemakkelijken wanneer er extra pools bijkomen. Bash pikt één waarde uit de array, daar wordt dan _mirror aangehangen, en je hebt je mirror disk voor die pool.
Het is mij niet duidelijk hoe die als commando worden opgepikt. Ik kan het dollarteken niet weglaten want dan vindt er geen expansie meer plaats.
Voor de duidelijkheid: ook toen de mirror disk variables nog in het script stonden nam Bash ze al voor commando's in plaats van variabelen.
Output door het script ziet er dan zo uit:
Wijzig ik in de configuratie ${zfspools[0]}_mirror naar ichi_mirror dan is er geen vuiltje aan de lucht...
Het configuratiebestand ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # Configuration file for the ZFS pool monitoring script # Language defaults to English. Possible to have it in # Dutch as well (nl). Help output is always English. language={language:-en} # Existing pools. This is an array; just add the names of every pool you have. zfspools=(ichi ni) # Mirror disks in eS-ATA enclosures. The disk's name in /dev/disk/by-id/. # You need to set these manually for each pool. ${zfspools[0]}_mirror=ata-Maxtor_ZYERAR5794984 ${zfspools[1]}_mirror=ata-Maxtor_ZYUEAR5868381 # E-mail address notifications go out to email="azerty@qsdfqgqd.com" |
De problematische variabelen zijn de mirror disks, die volgens Bash commando's zijn. Die variabelen zijn qua naamgeving gebaseerd op de zfspools array waarin alle bestaande ZFS pools vermeld worden. Dit om configuratie te vergemakkelijken wanneer er extra pools bijkomen. Bash pikt één waarde uit de array, daar wordt dan _mirror aangehangen, en je hebt je mirror disk voor die pool.
Het is mij niet duidelijk hoe die als commando worden opgepikt. Ik kan het dollarteken niet weglaten want dan vindt er geen expansie meer plaats.
Voor de duidelijkheid: ook toen de mirror disk variables nog in het script stonden nam Bash ze al voor commando's in plaats van variabelen.
Output door het script ziet er dan zo uit:
# zpoolmonitoring /etc/default/zpoolmonitoring: regel 12: ichi_mirror=ata-Maxtor_ZYERAR5794984: opdracht niet gevonden /etc/default/zpoolmonitoring: regel 13: ni_mirror=ata-Maxtor_ZYUEAR5868381: opdracht niet gevonden
Wijzig ik in de configuratie ${zfspools[0]}_mirror naar ichi_mirror dan is er geen vuiltje aan de lucht...
Got Leenucks? | Debian Bookworm x86_64 / ARM | OpenWrt: Empower your router | Blogje