ubuntuusers.de

Klausur Bash-Skripting

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.10 (Kinetic Kudu)
Antworten |

Nepomuk

Anmeldungsdatum:
10. Dezember 2022

Beiträge: Zähle...

Guten Abend, mein Sohn schreibt am kommenden Montag eine Klausur, die wohl ähnlich aufgebaut ist wie die im Anhang. Leider sind im Unterricht die Grundlagen nicht gut aufgebaut worden und es hat auch kein entsprechendes Übungsmaterialien zur Vorbereitung gegeben. Er hat große Schwierigkeiten einen Ansatz zur Lösung für diese Aufgabe zu finden und ich hoffe, dass wir hier ein bisschen Unterstützung bekommen. Seine Klassenkameraden stehen ähnlich vor einem Rätsel und bisher hat kein Kollege einen Lösungsansatz liefern können.

Viele Grüße Nepomuk

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9708

Wohnort: Münster

Nepomuk schrieb:

mein Sohn schreibt am kommenden Montag eine Klausur

Also übermorgen, vermutlich morgens. Jetzt ist es Samstag Abend, somit bleibt für effektive Nachhilfe kaum Zeit.

die wohl ähnlich aufgebaut ist wie die im Anhang.

Der Anhang fehlt leider. So kann niemand helfen.

Nepomuk

(Themenstarter)

Anmeldungsdatum:
10. Dezember 2022

Beiträge: 4

Sorry, dann ist der Anhang beim Hochladen verlorengegangen. Es ist richtig, dass es mehr als spät ist, um das richtig aufzubereiten. Leider waren alle vorherigen Versuche, jemanden mit Expertise im Umfeld zu finden gescheitert. kB, da haben Sie sicherlich recht. Aber der Versuch hier ist besser als nichts.

Bilder

Nepomuk

(Themenstarter)

Anmeldungsdatum:
10. Dezember 2022

Beiträge: 4

Ein Klassenkollege hat dieses Ergebnis zur Verfügung gestellt. Kann jemand im Forum etwas damit anfangen? Sind die Ansätze und die Vorgehensweise auf dem richtigen Weg? In der Ubuntu-Konsole meines Sohns ist es zu einer Fehlermeldung gekommen.

Viele Grüße Nepomuk

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
#!/bin/bash

# Purpose: Creates and checks DHCP config based on MAC-Adresses

dataDir="/tmp/var/dhcp_updates";

#variables
varForceNew=0;
varRouter=0;
varNameSrv=0;
varEthx="enp0s3";

if test whoami != "root";
then
    echo "ERROR: OK";
    exit 1;
fi

# Ask for parameters
while getopts "fr:n:i:" varArg;
do
    if test $varArg = "f";
    then
        varForceNew=1;
        #echo "New entry forced to create";
    fi
    if test $varArg = "r";
    then
        varRouter=$OPTARG;
        #echo "Router = $varRouter";
    fi
    if test $varArg = "n";
    then
        varNameSrv=$OPTARG;
        #echo "DNS = $varNameSrv";
    fi
    if test $varArg = "i";
    then
        varEthx=$OPTARG;
        #echo "Interface = $varEthx";
    fi
done

# Router test
if test $varRouter = "0";
then
    echo "missing Router";
    exit 1;
fi
# DNS test
if test $varNameSrv = "0";
then
    echo "missing DNS";
    exit 2;
fi

# Processing
varHostname=hostname;
varMAC=\
    ip link \
    | grep $varEthx -A 1 \
    | grep -E "([0-9a-f]{2}:){5}[0-9a-f]{2}" -o \
    | grep -v ff:ff:ff:ff:ff:ff \
;

varIP=\
    ip a \
    | grep $varEthx \
    | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" -o \
    | head -n 1 \
;

mkdir -p $dataDir/ > /dev/null;

test -f $dataDir/skip_update \
    && rm $dataDir/skip_update;

varCreateNew=$varForceNew;
if test -f "$dataDir/$varHostname.blf.com";
then
    macMatch=grep "hardware ethernet $varMAC" -c $dataDir/$varHostname.blf.com;
    ipMatch=grep "fixed-address $varIP" -c $dataDir/$varHostname.blf.com;
    if test $macMatch -ne 0 -a $ipMatch -ne 0;
    then
        
$dataDir/skip_update;
    else
        varCreateNew=1;
    fi

else
    varCreateNew=1;
fi

if test $varCreateNew -eq 1;
then
    echo "host $varHostname {" > $dataDir/$varHostname.blf.com;
    echo "    hardware ethernet $varMAC" >> $dataDir/$varHostname.blf.com;
    echo "    fixed-address $varIP" >> $dataDir/$varHostname.blf.com;
    echo "    option routers $varRouter" >> $dataDir/$varHostname.blf.com;
    echo "    option domain-name-servers $varNameSrv" >> $dataDir/$varHostname.blf.com;
    echo "}" >> $dataDir/$varHostname.blf.com;
fi

exit 0;

Bearbeitet von rklm:

Codeblock und Syntaxhighlighting. Bitte beachte Forum/Syntax und nutze die Vorschaufunktion!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Nepomuk schrieb:

mein Sohn schreibt am kommenden Montag eine Klausur, die wohl ähnlich aufgebaut ist wie die im Anhang. Leider sind im Unterricht die Grundlagen nicht gut aufgebaut worden und es hat auch kein entsprechendes Übungsmaterialien zur Vorbereitung gegeben.

Dann ist die erste Adresse die Lehrerin.

Er hat große Schwierigkeiten einen Ansatz zur Lösung für diese Aufgabe zu finden und ich hoffe, dass wir hier ein bisschen Unterstützung bekommen. Seine Klassenkameraden stehen ähnlich vor einem Rätsel und bisher hat kein Kollege einen Lösungsansatz liefern können.

Wir machen hier keine Hausaufgabenhilfe. Es wäre wohl auch besser, wenn der Sohnemann selbst hier fragt. Schließlich muss er ja die Aufgabe lösen.

Nepomuk schrieb:

Ein Klassenkollege hat dieses Ergebnis zur Verfügung gestellt. Kann jemand im Forum etwas damit anfangen? Sind die Ansätze und die Vorgehensweise auf dem richtigen Weg?

Ich habe mir nicht die konkrete Funktionalität angeschaut. Aber es ist ziemlich viel unnötiger Firlefanz drin (z.B. die ganzen Semikolons am Zeilenende). Ein grundlegender Fehler ist in Zeile 81 und 82, wo wohl eine Command Substitution stehen soll.

Ansonsten; für die Auswertung der Kommandozeilenschalter (ab Zeile 20) nutzt man i.d.R. ein case-Statement. Dafür gibt es reichlich Beispiele im Netz und sogar bei uns im Wiki: Shell/Bash-Skripting-Guide für Anfänger. Variablen mit einem Präfix "var" zu versehen macht den Code eher unleserlicher, finde ich.

In der Ubuntu-Konsole meines Sohns ist es zu einer Fehlermeldung gekommen.

Die konkrete Fehlermeldung wäre schon hilfreich - am besten im Code-Block.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9708

Wohnort: Münster

Nepomuk schrieb:

[…] Sind die Ansätze und die Vorgehensweise auf dem richtigen Weg?

Leider erschwert die ungeschickte Formatierung sehr die Beurteilung.

Manches scheint richtig zu sein, vieles aber umständlich. Manches ist auch falsch, beispielsweise Konstrukte wie:

varIP=\
    ip a \
[…]

Nepomuk

(Themenstarter)

Anmeldungsdatum:
10. Dezember 2022

Beiträge: 4

Hallo rklm und kB,

vielen Dank für Eure Antworten und eure Einschätzungen. Eure Rückmeldungen und Antworten habe ich weitergegeben und es bringt die Sache vielleicht ein Stück nach vorne.

rkml schrieb:

Dann ist die erste Adresse die Lehrerin.

Das ist richtig und hier werden sicherlich noch Gespräche geführt.

Wir machen hier keine Hausaufgabenhilfe. Es wäre wohl auch besser, wenn der Sohnemann selbst hier fragt. Schließlich muss er ja die Aufgabe lösen.

Das wird auch bei diesem einen Fall bleiben und manchmal ist leider Unterstützung notwendig, auch wenn er auf jeden Fall selbstverantwortlich ist.

Gruß Nepomuk

Antworten |