Als je een programma op meerdere computers moet installeren, wordt het interessant om de installatie te automatiseren. Automatisatie kun je ook gebruiken om enkel te configureren. Dit is niet alleen interessant voor computers in eigen gebruik (of op het werk), maar ook om complexere zaken bij leken te installeren. Door de automatisatie verloopt de installatie niet alleen veel eenvoudiger (uitvoeren van een installatie script), maar ook veel soepeler. Het schrijven van zo'n automatiserend script vraagt echter een inspanning.
Vandaag toon ik aan de hand van een script met veel commentaarregels met uitleg, hoe je het grafische gnome pakket Cryptkeeper in KDE op openSUSE 12.2 volautomatisch installeert en configureert. Je merkt reeds aan de omschrijving dat dit script alleen zal werken op een openSUSE 12.2 systeem waarop je in KDE werkt. Het Cryptkeeper pakket wordt beschreven in de tip EncFS Cryptkeeper.
Voor je aan zo'n script begint, moet je elke stap die noodzakelijk is om het pakket te installeren en te configureren kennen. De stappen die we nodig hebben, moeten daarenboven in een script bruikbaar zijn. M.a.w. het gebruik van de muis is uitgesloten, enkel terminalopdrachten zijn toegelaten.
Het zelf geschreven script ga je waarschijnlijk ook verschillende malen moeten testen, het zou me verwonderen moest het script bij de eerste test reeds vlekkeloos werken. Bij mij lukt dit alleszins niet, al was het maar een stomme typfout. Vandaar dat een testsysteem, bijvoorbeeld met behulp van een virtuele computer (VMware of VirtualBox) met een basissysteem en een reservekopie gouden hulpmiddelen zijn.
Het in het script gebruikte XML configuratiebestand werd aangemaakt door op een computer met een manueel (met de muis) geconfigureerde Cryptkeeper de opdracht gconftool-2 --dump /apps/cryptkeeper > cryptkeeper.xml
uit te voeren.
Deze opdracht exporteert de configuratie van gnome programma's (hier cryptkeeper) naar een XML bestand.
Dit XML bestand wordt rechtstreeks in het script opgenomen met behulp van het Here Documents systeem (EOF
).
Om het XML universeler te kunnen gebruiken, heb ik de persoonlijke mappen (/home/gebruikersnaam) vervangen door $HOME.
Door deze aanpassing kan de configuratie voor verschillende gebruikers en/of computers gebruikt worden.
sh cryptkeeper_installer.sh
uit (als je het script hebt opgeslagen in de persoonlijke map).Dit script werkt, maar kan verder vervolledigd worden met extra functies. Zoals een controle op de gebruikte distributie (hier openSUSE 12.2) en de grafische omgeving (hier KDE). Door zulke controles toe te voegen, vermijdt je verkeerd gebruik, wat de gebruiksvriendelijkheid ten goede komt. Daarnaast kan je het script uitbreiden tot een volledig installatie- en configuratiesysteem voor meerdere pakketten. De aanzet is gegeven, aan jullie om zulke scripts in te zetten waar je ze kunt gebruiken.
#!/bin/bash # cryptkeeper_installer.sh # Aangezien we soms root toegang nodig hebben, vragen we het root wachtwoord # Met behulp van een terminal dialoogvenster wordt het wachtwoord in een bestand opgeslagen Wachtwoord=$(dialog --stdout --passwordbox "Voer het root-wachtwoord in" 7 40) # Indien kdialog op de computer geïnstalleerd is, kun je het wachtwoord met een grafisch dialoogvenster opvragen #Wachtwoord=`kdialog --password "Voer het root-wachtwoord in"` # Test of het ingevoerde wachtwoord juist is beheerder=`echo $Wachtwoord | su - -c 'echo $USER'` if [ "$beheerder" != 'root' ] ; then dialog --msgbox "Script onderbroken wegens foutief root-wachtwoord." 5 55 exit fi echo -------------------- echo Encrypted Filesystem echo -------------------- # Aanmaken map om versleutelde bestanden en mappen in weer te geven mkdir -p $HOME/Leesbaar # aanmaken met gconftool-2 --dump /apps/cryptkeeper > cryptkeeper.xml # Aanmaken van het xml bestand met de configuratie voor cryptkeeper cat <<EOF > $HOME/cryptkeeper.xml <gconfentryfile> <entrylist base="/apps/cryptkeeper"> <entry> <key>allow_other</key> <value> <bool>false</bool> </value> </entry> <entry> <key>filemanager</key> <value> <string>dolphin</string> </value> </entry> <entry> <key>idletimeout</key> <value> <int>0</int> </value> </entry> <entry> <key>keep_mountpoints</key> <value> <bool>false</bool> </value> </entry> <entry> <key>stashes</key> <value> <string>$HOME/.Leesbaar_encfs $HOME/Leesbaar </string> </value> </entry> </entrylist> </gconfentryfile> EOF exit # Softwarebron met cryptkeeper pakket als root gebruiker aan het systeem toevoegen echo $Wachtwoord | su -c "zypper addrepo http://download.opensuse.org/repositories/home:/nobange/openSUSE_12.2/ EncFS" # Het pakket cryptkeeper zonder actieve handelingen (zoals het accepteren van de te installeren pakketten en het accepteren van de softwarebronsleutels) als root gebruiker installeren. echo $Wachtwoord | su -c "zypper --non-interactive --gpg-auto-import-keys install cryptkeeper" # Softwarebron terug van het systeem verwijderen, eventuele updates mis je dan wel echo $Wachtwoord | su -c "zypper removerepo EncFS" # Laat cryptkeeper automatisch starten bij het aanmelden in KDE ln -s /usr/bin/cryptkeeper .kde4/Autostart/cryptkeeper # Configureer cryptkeeper zoals vermeld in het hierboven aangemaakte xml bestand gconftool-2 --load $HOME/cryptkeeper.xml # Sluit en start het gnome configuratiesysteem om de nieuwe cryptkeeper configuratie te activeren gconftool-2 --shutdown gconftool-2 --spawn # Start cryptkeeper en ga verder (&) cryptkeeper & # Verwijder het XML bestand waarmee we cryptkeeper geconfigureerd hebben. rm $HOME/cryptkeeper.xml