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).

Opgave

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.

  1. 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
            
  2. 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
            
  3. 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
            
  4. 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)

  5. 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
            

Richtlijnen bij het indienen

Volg aandachtig onderstaande richtlijnen bij het indienen van je oplossing: