LX-SCR-INFO-inleiding
Updated aug/01/2010 09:10

bash scripting inleiding

  1. wat is een shell script

    Een shell script is een computerprogramma dat geheel geschreven is in commando taal. Commando's zoals ls en cd en find ... Die commando's geef je in aan de shell prompt. Vandaar de naam shellscripts.

  2. Dat kunnen heel eenvoudige dingen zijn:

  3. Dit is maar een begin

    Het weze duidelijk dat scripting bij de hogere eenvoudige voorbeelden blijft indien de kennis van de shell minimaal is. We moeten over een terdege basiskennis van de bash shell beschikken als we meer willen doen. Die kennis komt er alleen indien we dagelijks de command line interface gebruiken voor het beheer van onze eigen computer. Beter is natuurlijk systeembeheerder te zijn van enkele servers.

    Interesse voor scripting komt vanzelf als je enkele keren de .bashrc hebt aangepast, of als je je even hebt beziggehouden met opstartscripts in /etc/init.d.

    Een junior systeembeheerder komt eerder vroeg dan laat tot de constatering dat hij eenvoudige beheertaken zou willen automatiseren. Scripting is dan de eerste en misschien wel enige optie. Een senior sysadmin kan niet zonder scripting.

    In de hogere voorbeelden werd er op gedrukt te werken als gewone gebruiker. Dit is essentieel. Scripts bevatten altijd bugs. Zeker als je ze nog nooit hebt uitgevoerd. Als root gebruiker een script testen is een zekere weg naar vervroegd ontslag. Kan je niet anders dan testen als root, werk dan op een virtuele testmachine.

  4. Maak het je gemakkelijk

    Je kan je shellscripts kwijt in je home-directory. Dan is het soms praktisch een extentie .sh mee te geven.

    Beter is je shellscripts te bewaren in een afzonderlijke subdirectory. Bijvoorbeeld $HOME/bin. Je kan die directory dan ook toevoegen aan je $PATH.

    Je kan ook een alias verzinnen om chmod +x te verkorten:
    alias cx='chmod +x'
    en deze in de .bashrc plaatsen.

    Als editor is vim aangewezen. Denk eraan dat na elke save, je script wordt uitgetest in een terminal.
    De toestenbordsequentie <:><w><q>  2 x <pijltje naar boven> <enter>
    gaat waarschijnlijk sneller dan
    klikken op 'file', 'save' en vervolgens je terminal aanklikken en daar één keer <pijltje naar boven> <enter> intikken.

  5. Oefeningen:

    WERK ALS GEWONE GEBRUIKER !!!

    1. Indien je nog geen subdirectory bin hebt angemaakt in je $HOME, doe dit dan nu,
      Voeg $HOME/bin toe aan je PATH in je .bashrc
      Voeg de alias cx='chmod +x ' eveneens toe in je .bashrc

    2. Schrijf een script met de naam tedoen dat een kalender afdrukt van deze maand, daarna de file /etc/motd op scherm brengt, en tenslotte het commando mail uitvoert.

    3. Schrijf een script met de naam space en plaats het in de subdirectory bin. Het script moet de volgende commando's achter mekaar uitvoeren:

      df
      swapon -s
      free


    4. Breid het vorige script uit:

      df | grep "^/dev"
      swapon -s | grep "^/dev"
      free | grep "Mem"

    5. Breid het vorige script uit en probeer het gebruik van awk en column te begrijpen. Over het gebruik van awk vind je meer informatie terug in volgende hoofdstukken.

      df | grep "^/dev" | awk '{print $1,"size",$2,"used",$3,"free",$4}' | column -t
      swapon -s | grep "^/dev" | awk '{print $1,"size",$3,"used",$4}' | column -t
      free | grep "Mem" | awk '{print $1,"size",$2,"used",$3,"free",$4}' | column -t