Weer een leerrijke week. Bij een webbedrijf houdt niet alleen in dat je webtalen moet beheersen, maar soms komt er de oddjob servermanagement bij.

Nu, ik beheerde al even de server hier, maar blijkbaar leer je dus elke dag wat nieuws bij. Een van de dingen die ik geleerd heb is shell scripten, en veel trucs en tips ivm de linux shell die ik nog niet kende. Toen ik een e-book las over de shell ( die ook een introductie gaf van de meest gebruikte commando’s en gebruiken ), leerde ik onder andere de simpele commando’s zoals pwd ( print working directory ), en grep ( tekst filteren ).

Nu, deze commando’s zijn niet de meest nodige commando’s bij dagelijks serverbeheer, maar vb piping wel. Piping is het meest handige commando dat ik bijgeleerd heb. Piping gebeurt mbhv het | symbool, en laat ons toe commandos te chainen en zo output onderling te redirecten.

Een voorbeeld hiervan kan zijn als we een directory openen en alleen de bestanden willen zien met een .gz extensie. Dan kunnen we gewoon het commando ls -l | grep *.gz uitvoeren en dan krijgen we mooi een lijst voorgeschoteld met alle bestanden met een .gz extensie.

Nu komen we dan ook aan bij het andere dat ik geleerd heb, nl. shell scripten. We weten allemaal dat we php kunnen uitvoeren vanaf de commandline, en als we echt weten wat we doen, dan kunnen we ook php shell scripts creeƫren. Dit is an sich wel leuk, maar een deftig bash script werkt in mijn ogen nog altijd sneller met minder code, en dat de code een rare syntax heeft ( voor mij toch sinds ik van php af kom ), nemen we er maar bij.

Ik wil geen holy wars starten, maar het is gekend dat in de linux wereld er nogal een hevige discussie is van nano vs vi[m] vs emacs. ik ben lange tijd nano gebruiker geweest, maar ik heb gemerkt dat nano tekort schiet als men met grote scripts bezig is. Daarom dat ik eindelijk de tijd heb genomen om vi te leren. Vi is een leuk programma moet ik toegeven, eens dat je er mee leert werken toch.

Het shell script dat ik geschreven heb heeft als nut om een volledige dump te maken van een gekozen database, alle acties te loggen, en dan de dump met het log door te mailen naar een opgegeven emailadres. Er is ook een cleanup functie voorzien.

Ik heb hieruit geleerd dat shell scripts eigenlijk nog een krachtige taal zijn an sich omdat ze controlestructuren voorzien. Dat dit van niet zo een hoog niveau is dan andere talen, is te begrijpen, maar het maakt het leven toch weer dat beetje leuker. Het enige waar ik nog op vloek soms is de switch syntax die er als volgt uitziet:

while [ “$1″ != “” ]; do
case $1 in
-du | –dbuser ) shift
dbuser=$1
;;
-dp | –dbpass ) shift
dbpass=$1
;;
-ma | –mailtoaddress ) shift
mailto=$1
;;
-db | –database ) shift
database=$1
;;
-bd | –backupdir ) shift
backupdir=$1
;;
-ca | –cleanupafter ) shift
cleanupafter=true
;;
esac
shift
done

De bovenstaande code gaat een voor een alle parameters af die meegegeven werden aan het commando en bindt die aan de interne variabelen. De while samen met de switch zorgt ervoor dat de commandos niet op een vaste vollegorde moeten worden gezet.

Buiten leren shell scripten, heb ik ook aan enkele projecten meegewerkt, en weer les gegeven aan iemand die een basis site moest kunnen bouwen.