Het tekstbestand access.log.txt1 bevat de historiek van de activiteiten van een webserver. Elke regel van dit bestand bevat informatie over een vraag aan de webserver. Deze informatie wordt weergegeven als de reeks velden die hieronder staan opgelijst, en die van elkaar worden gescheiden door een spatie. Merk hierbij op dat sommige velden zelf ook spaties kunnen bevatten (zie beschrijving).
aanvraagadres: adres van aanvrager; kan geen spaties bevatten
gebruikersnaam: gebruikersnaam gebruikt bij aanvraag; aangegeven met - indien geen gebruikersnaam vermeld werd; kan geen spaties bevatten
wachtwoord: wachtwoord gebruikt bij aanvraag; aangegeven met - indien geen wachtwoord gebruikt werd; kan geen spaties bevatten
timestamp: tijdstip van aanvraag, afgebakend door vierkantje haakjes; binnen vierkantje haakjes kunnen spaties voorkomen
request: geeft aan wat er precies werd aangevraagd, afgebakend door dubbele aanhalingstekens; binnen dubbele aanhalingstekens kunnen spaties voorkomen
statuscode: getal dat http statuscode aangeeft
grootte: grootte van antwoord van webserver, uitgedrukt in bytes; aangegeven met - indien geen antwoord werd teruggegeven
Gevraagd wordt om — gebruikmakend van de teksteditors vi of vim — een reeks commando's op te stellen die achtereenvolgens de volgende opdrachten uitvoeren. Probeer voor elke opdracht zo weinig mogelijk commando's te gebruiken en zorg er voor dat elk van deze commando's uit zo weinig mogelijk tekens bestaat. De commando's mogen geen programmeerbare filters (bv. awk) gebruiken. Alle opdrachten moeten na elkaar uitgevoerd worden. Ter controle kan je gebruikmaken van de meegeleverde bestanden access.log.i.txt, die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.
Zorg er voor dat de velden gescheiden worden door een asterisk (*). Zorg er ook voor dat de velden met gebruikersnaam en wachtwoord verwijderd worden. Zo moet
plexus.v2.nl - - [22/Jan/2003:19:04:01 +0100] "GET / HTTP/1.0" 200 395 dyn143.nl - - [23/Jan/2003:13:34:11 +0100] "GET /html/index.html HTTP/1.1" 404 287
bijvoorbeeld omgezet worden naar (access.log.1.txt2)
plexus.v2.nl*[22/Jan/2003:19:04:01 +0100]*"GET / HTTP/1.0"*200*395 dyn143.nl*[23/Jan/2003:13:34:11 +0100]*"GET /html/index.html HTTP/1.1"*404*287
Het request-veld bevat tussen dubbele aanhalingstekens zelf drie informatievelden die van elkaar worden gescheiden door een spatie: $$i$$) een http-methode, $$ii$$) het adres van wat precies werd aangevraagd en $$iii$$) de gebruikte versie van het http-protocol. Zorg er voor dat de dubbele aanhalingstekens rond dit veld verwijderd worden. Verwijder ook de gebruikte versie van het http-protocol en vervang de spatie tussen de http-methode en het adres door een asterisk (*). Toegepast op het vorige voorbeeld wordt dit (access.log.2.txt3)
plexus.v2.nl*[22/Jan/2003:19:04:01 +0100]*GET*/*200*395 dyn143.nl*[23/Jan/2003:13:34:11 +0100]*GET*/html/index.html*404*287
Verwijder de vierkante haakjes rond het timestamp-veld, laat de tijdzone weg en plaats een spatie tussen datum en tijdsaanduiding in plaats van een dubbelpunt (:). Wijzig ook de volgorde van de velden. Plaats het adres van de opgevraagde pagina vooraan, gevolgd door de http-methode, de statuscode, de grootte, het tijdstip en het adres van de aanvrager. Toegepast op het vorige voorbeeld wordt dit (access.log.3.txt4)
/*GET*200*395*22/Jan/2003 19:04:01*plexus.v2.nl /html/index.html*GET*404*287*23/Jan/2003 13:34:11*dyn143.nl
Aanvragen die niet door mensen uitgevoerd werden, willen we liever niet in rekening brengen bij het analyseren van de historiek van de webserver. Verwijder daarom de regels waar bot of crawl voorkomt in het adres van de aanvrager. (access.log.4.txt5)
Vervang (vanuit de teksteditor vi of vim) het logbestand door een overzicht van hoeveel keer elke pagina werd opgevraagd. Dit overzicht moet aflopend gesorteerd worden op het aantal aanvragen. Dit geeft onder meer volgende regels (access.log.5.txt6)
2679 /robots.txt 2044 /logs/clients.log
Volg aandachtig onderstaande richtlijnen bij het indienen van je oplossing:
Plaats je commando's voor de vijf delen van deze vraag onder de titels in het indienvenster.
Maak geen aanpassingen aan de regels die al in het venster staan. Deze worden immers gebruikt om de ingediende oplossing op te splitsen in de verschillende deelantwoorden. Op de feedbackpagina kan je controleren of de opsplitsing gelukt is.