Verified Commit 029ba883 authored by Jakob Moser's avatar Jakob Moser
Browse files

Adjust pooltest for Summer Semester 2024

parent 7eb87f20
Loading
Loading
Loading
Loading
+40 −40
Original line number Diff line number Diff line
@@ -166,7 +166,7 @@ export const practice = test("Linux-Übungsmodus", function() {
    })
})

export const pooltest = test("Pooltest Wintersemester 2023/2024", async function () {
export const pooltest = test("Pooltest Sommersemester 2024", async function () {
    this.welcome(`
        <h1>Willkommen zum Pooltest!</h1>
        <p>In diesem Test sollst du nachweisen, dass du grundlegende Linux-Kenntnisse besitzt und diese auch anwenden kannst. Der Test besteht aus <strong id="exerciseCnt"></strong> Aufgaben, dauert etwa eine Stunde und wir empfehlen, ihn am Stück durchzuarbeiten.</p>
@@ -181,25 +181,25 @@ export const pooltest = test("Pooltest Wintersemester 2023/2024", async function

    this.exercise("Datei anlegen", async function () {
        this.describe(`Erstelle eine Datei mit dem Namen "botschaft" und dem Inhalt
        "The door is unlockable" (jeweils ohne
        "Time flies like an arrow" (jeweils ohne
        Anführungszeichen und ohne Punkt am Ende).`)

        // Wait until the user confirms that they believe they are done with the exercise ...
        await this.manualConfirmation()

        // ... then verify the existence of the file with the correct output
        this.verify("cat botschaft").hasOutput("The door is unlockable")
        this.verify("cat botschaft").hasOutput("Time flies like an arrow")
    })

    this.exercise("Textdateien lesen und schreiben", async function () {
        this.describe(`Lasse dir den Inhalt der Datei "reverse.txt" anzeigen und schreibe den Inhalt 
        in umgekehrter Reihenfolge in eine neue Datei mit dem Namen "correct.txt"`)
    
        await this.prepareWith("echo 'puriS tsaf tfaS tsi ruP' >> reverse.txt")
        await this.prepareWith("echo 'amanaP :lanac a ,nalp a ,nam A' >> reverse.txt")
    
        await this.manualConfirmation()
    
        this.verify("cat correct.txt").hasOutput("Pur ist Saft fast Sirup")
        this.verify("cat correct.txt").hasOutput("A man, a plan, a canal: Panama")
    })

    this.exercise("Ordner erstellen", async function () {
@@ -226,27 +226,28 @@ export const pooltest = test("Pooltest Wintersemester 2023/2024", async function
        this.verify().hasOutput("/proc/tty")
    })

    this.exercise("Verschieben der korrekten Datei", async function () {
        this.describe(`Du bist innehalb des Verzeichnisses "Contacts" in einem Unterordner mit Dateien, die als Namen mögliche Kontaktadressen tragen.
        Verschiebe die Datei mit der korrekten Mail-Adresse der Gruppe Technik in das übergeordnete Verzeichnis. Lösche alle anderen Dateien aus
        diesem Ordner, die als Namen Mail-Adressen haben, mit denen du uns nicht erreichen kannst.`)
    this.exercise("Kopieren vieler Dateien in ein neues Verzeichnis", async function () {
        this.describe(`Kopiere alle Dateien aus dem Verzeichnis "/resources/so_much" in einen 
        neuen Unterordner deines Home-Verzeichnisses mit dem Namen "much".`)

        await this.prepareWith(`mkdir -p /resources/Contacts/unsure && 
                                cd /resources/Contacts/unsure &&
                                touch technik@cl.uni-heidelberg.de it-support@cl.uni-heidelberg.de technik-gruppe@cl.uni-heidelberg.de`)
        await this.prepareWith(`mkdir -p /resources/so_much &&
                                cd /resources/so_much &&
                                for i in "peter" "susanne" "josef" "martin" "samira" "gerhard" "manfred" "ahmad"
                                do
                                    for j in "dateien" "dokumente" "filme" "videos" "musik" "software"
                                    do 
                                        echo "Some content" > "$i-$j"
                                    done
                                done
                                `)

        await this.manualConfirmation()

        await this.prepareWith(`mkdir -p /val &&
                                echo 'if ( ! [ -f /resources/Contacts/unsure/technik@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/unsure/it-support@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/unsure/technik-gruppe@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/technik-gruppe@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/it-support@cl.uni-heidelberg.de ] &&
                                           [ -f /resources/Contacts/technik@cl.uni-heidelberg.de ] ); then echo "yes"; else echo "no"; fi' > /val/2bx821.sh &&
                                chmod a+x /val/2bx821.sh`)
                                echo 'diff -r /resources/so_much /root/much &> /dev/null; if [ $? == 0 ]; then echo "yes"; else echo "no"; fi' > /val/3w8ocm.sh &&
                                chmod a+x /val/3w8ocm.sh`)

        this.verify('/val/2bx821.sh').hasOutput("yes")
        this.verify('/val/3w8ocm.sh').hasOutput("yes")
    })

    this.exercise("Löschen und Umbenennen von Ordnern und Dateien", async function () {
@@ -269,28 +270,27 @@ export const pooltest = test("Pooltest Wintersemester 2023/2024", async function
        this.verify('/val/18ne2x.sh').hasOutput("yes")
    })

    this.exercise("Kopieren vieler Dateien in ein neues Verzeichnis", async function () {
        this.describe(`Kopiere alle Dateien aus dem Verzeichnis "/resources/so_much" in einen 
        neuen Unterordner deines Home-Verzeichnisses mit dem Namen "much".`)
    this.exercise("Verschieben der korrekten Datei", async function () {
        this.describe(`Du bist innehalb des Verzeichnisses "Contacts" in einem Unterordner mit Dateien, die als Namen mögliche Kontaktadressen tragen.
        Verschiebe die Datei mit der korrekten Mail-Adresse der Gruppe Technik in das übergeordnete Verzeichnis. Lösche alle anderen Dateien aus
        diesem Ordner, die als Namen Mail-Adressen haben, mit denen du uns nicht erreichen kannst.`)

        await this.prepareWith(`mkdir -p /resources/so_much &&
                                cd /resources/so_much &&
                                for i in "peter" "susanne" "josef" "martin" "samira" "gerhard" "manfred" "ahmad"
                                do
                                    for j in "dateien" "dokumente" "filme" "videos" "musik" "software"
                                    do 
                                        echo "Some content" > "$i-$j"
                                    done
                                done
                                `)
        await this.prepareWith(`mkdir -p /resources/Contacts/unsure && 
                                cd /resources/Contacts/unsure &&
                                touch technik@cl.uni-heidelberg.de it-support@cl.uni-heidelberg.de technik-gruppe@cl.uni-heidelberg.de`)

        await this.manualConfirmation()

        await this.prepareWith(`mkdir -p /val &&
                                echo 'diff -r /resources/so_much /root/much &> /dev/null; if [ $? == 0 ]; then echo "yes"; else echo "no"; fi' > /val/3w8ocm.sh &&
                                chmod a+x /val/3w8ocm.sh`)
                                echo 'if ( ! [ -f /resources/Contacts/unsure/technik@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/unsure/it-support@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/unsure/technik-gruppe@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/technik-gruppe@cl.uni-heidelberg.de ] &&
                                           ! [ -f /resources/Contacts/it-support@cl.uni-heidelberg.de ] &&
                                           [ -f /resources/Contacts/technik@cl.uni-heidelberg.de ] ); then echo "yes"; else echo "no"; fi' > /val/2bx821.sh &&
                                chmod a+x /val/2bx821.sh`)

        this.verify('/val/3w8ocm.sh').hasOutput("yes")
        this.verify('/val/2bx821.sh').hasOutput("yes")
    })

    this.exercise("Berechtigungen einer versteckten Datei herausfinden", async function () {
@@ -298,7 +298,7 @@ export const pooltest = test("Pooltest Wintersemester 2023/2024", async function
        Finde heraus, wer auf diese Datei Lesezugriff hat.`)

        await this.prepareWith(`if [[ ! -d /resources ]]; then mkdir /resources; fi &&
                                echo 'I like licorice' > /resources/.my-little-secret &&
                                echo 'Ich mag Pizza Hawaii' > /resources/.my-little-secret &&
                                chmod 400 /resources/.my-little-secret`)

        await this.manualConfirmation()
@@ -315,13 +315,13 @@ export const pooltest = test("Pooltest Wintersemester 2023/2024", async function
    })

    this.exercise("Berechtigungen ändern", async function () {
        this.describe(`Ändere die Dateirechte von "saetze" so, dass der Besitzer die Datei nur lesen kann, die besitzende Gruppe die Datei lesen und schreiben kann und alle anderen gar nichts dürfen.`)
        this.describe(`Ändere die Dateirechte von "herausforderung" so, dass der Besitzer die Datei nur lesen kann, die besitzende Gruppe die Datei lesen und schreiben kann und alle anderen gar nichts dürfen.`)

        await this.prepareWith("if [[ ! -d /root/tux ]]; then mkdir /root/tux; fi; cd /root/tux; echo Colorless green ideas sleep furiously > saetze; echo The cat is on the mat >> saetze; chmod 644 saetze")
        await this.prepareWith("if [[ ! -d /root/tux ]]; then mkdir /root/tux; fi; cd /root/tux; echo Wreck a nice beach > herausforderung; echo Recognize speech >> herausforderung; chmod 644 herausforderung")

        await this.manualConfirmation()

        this.verify("ls -ld saetze").hasOutput((outputLines) => {
        this.verify("ls -ld herausforderung").hasOutput((outputLines) => {
            return outputLines.length === 1 && outputLines[0].substring(0, 10).match(/-r--rw----/)
        })
    })