Aufgaben Bash function: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= Aufgabe 1 =
 
= Aufgabe 1 =
 
 
* Erstellen Sie eine Funktion ''my-ips'' in ihrer .bashrc, die alle konfigurierten IPv4 Adressen ohne Netzmaske anzeigt
 
* Erstellen Sie eine Funktion ''my-ips'' in ihrer .bashrc, die alle konfigurierten IPv4 Adressen ohne Netzmaske anzeigt
 
 
<!-- * '''vim ~/.bashrc''' -->
 
<!-- * '''vim ~/.bashrc''' -->
 
<!-- <syntaxhighlight lang=bash> -->
 
<!-- <syntaxhighlight lang=bash> -->
Zeile 12: Zeile 10:
 
<!-- </syntaxhighlight> -->
 
<!-- </syntaxhighlight> -->
 
<!-- * '''source ~/.bashrc''' -->
 
<!-- * '''source ~/.bashrc''' -->
 
 
= Aufgabe 2 =
 
= Aufgabe 2 =
 
+
* Stellen Sie diese Funktion anderen Skripten zur Verfügung, indem Sie mit '''export -f ''name-der-funktion''''' arbeiten
* Stellen Sie diese Funktion anderen Skripten zur Verfügung, indem sie mit '''export -f ''name-der-funktion''''' arbeiten
 
 
* Testen Sie die Funktion in einem separaten Skript
 
* Testen Sie die Funktion in einem separaten Skript
 
* Überlegen Sie sich wie man solche Funktionen am besten organsiert; Wo würden Sie solche Funktionen zentral definieren?  
 
* Überlegen Sie sich wie man solche Funktionen am besten organsiert; Wo würden Sie solche Funktionen zentral definieren?  
 
 
<!-- * '''vim test.sh''' -->
 
<!-- * '''vim test.sh''' -->
 
 
<!--  my-ips -->
 
<!--  my-ips -->
 
 
<!-- * '''bash test.sh''' -->
 
<!-- * '''bash test.sh''' -->
 
 
<!--  bash: my-ip: Kommando nicht gefunden. -->
 
<!--  bash: my-ip: Kommando nicht gefunden. -->
 
 
<!-- * '''vim ~/.bashrc''' -->
 
<!-- * '''vim ~/.bashrc''' -->
 
<!-- <syntaxhighlight lang=bash> -->
 
<!-- <syntaxhighlight lang=bash> -->
Zeile 33: Zeile 24:
 
<!-- ip a | grep "^\s*inet " | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1 -->
 
<!-- ip a | grep "^\s*inet " | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1 -->
 
<!-- } -->
 
<!-- } -->
 
 
<!-- export -f my-ips -->
 
<!-- export -f my-ips -->
 
<!-- ... -->
 
<!-- ... -->
Zeile 39: Zeile 29:
 
<!-- * '''source ~/.bashrc''' -->
 
<!-- * '''source ~/.bashrc''' -->
 
<!-- * '''bash test.sh''' -->
 
<!-- * '''bash test.sh''' -->
 
 
<!--  127.0.0.1 -->
 
<!--  127.0.0.1 -->
 
<!--  192.168.178.81 -->
 
<!--  192.168.178.81 -->
 
<!-- * Funktionen entweder alle in ''~/.bashrc'' definieren oder in ''~/.local/lib/bash-funcs'', welche von ''~/.bashrc'' gesourced wird -->
 
<!-- * Funktionen entweder alle in ''~/.bashrc'' definieren oder in ''~/.local/lib/bash-funcs'', welche von ''~/.bashrc'' gesourced wird -->
 +
=Aufgabe 3=
 +
*Schreibe eine Funktion in Bash, die den Quadratwert einer gegebenen Zahl berechnet und ausgibt.
 +
*Die Funktion soll den Namen "square" haben und einen Parameter "num" entgegennehmen.
 +
<!--
 +
Lösung:
 +
 +
bash
 +
Copy code
 +
#!/bin/bash
 +
 +
# Definition der Funktion square
 +
square() {
 +
  local num=$1
 +
  local result=$((num * num))
 +
  echo "Der Quadratwert von $num ist: $result"
 +
}
 +
 +
# Aufruf der Funktion mit der Zahl 5
 +
square 5
 +
Ausgabe:
 +
 +
yaml
 +
Copy code
 +
Der Quadratwert von 5 ist: 25
 +
In diesem Beispiel wird die Funktion "square" definiert, die den übergebenen Parameter "num" verwendet, um den Quadratwert zu berechnen. Die Funktion speichert das Ergebnis in der lokalen Variablen "result" und gibt es dann mit einer entsprechenden Ausgabe aus. Am Ende wird die Funktion mit der Zahl 5 aufgerufen, um den Quadratwert von 5 zu berechnen und auszugeben.
 +
-->
 +
=Aufgabe 4=
 +
*Schreiben Sie ein Skript unter Verwendung von Funktionen.
 +
*Übergeben Sie dem Skript ein TODO-Parameter(mac,ping,port) und eine IP
 +
*Folgendes soll festgestellt werden:
 +
**Welche Mac Adresse hat die IP
 +
**Ist der Rechner online
 +
**Welche TCP Ports bis 1024 sind offen?
 +
 +
 +
 +
 +
 +
 +
<!--
 +
<syntaxhighlight lang=bash>
 +
#!/bin/bash
 +
TODO=$1
 +
IP=$2
 +
function info-arp()
 +
{
 +
ip neigh ls $IP | cut -f 5  -d " "
 +
}
 +
function info-icmp()
 +
{
 +
if ping -q  -c 1 -w 1  $IP > /dev/null 2>&1
 +
then
 +
echo online
 +
else
 +
echo offline
 +
fi
 +
}
 +
function info-ports()
 +
{
 +
for ((port=1;port<1024;port++))
 +
do
 +
if netcat -w 1 -z $IP $port
 +
then
 +
echo status: open $port
 +
fi
 +
done
 +
}
 +
 +
case $1 in
 +
arp)
 +
echo host: $2 info: $1
 +
echo mac: $(info-arp)
 +
;;
 +
 +
icmp)
 +
echo host: $2 info: $1
 +
echo status: $(info-icmp)
 +
;;
 +
 +
ports)
 +
echo host: $2 info: $1
 +
info-ports
 +
;;
 +
*)
 +
echo usage $1 "arp|icmp|ports"
 +
;;
 +
esac
 +
</syntaxhighlight>
 +
-->
 +
 +
=Aufgabe 5=
 +
*Schreiben Sie eine Funktion der sie eine IP Adresse übergeben. Es soll die IP Adresse in eine Dezimal Zahl umwandeln.
 +
=Aufgabe 6=
 +
*Schreiben Sie eine Funktion der sie eine IP Adresse übergeben. Es soll die IP Adresse in eine Hexadezimal Zahl umwandeln.

Aktuelle Version vom 8. Juni 2023, 07:55 Uhr

Aufgabe 1

  • Erstellen Sie eine Funktion my-ips in ihrer .bashrc, die alle konfigurierten IPv4 Adressen ohne Netzmaske anzeigt

Aufgabe 2

  • Stellen Sie diese Funktion anderen Skripten zur Verfügung, indem Sie mit export -f name-der-funktion arbeiten
  • Testen Sie die Funktion in einem separaten Skript
  • Überlegen Sie sich wie man solche Funktionen am besten organsiert; Wo würden Sie solche Funktionen zentral definieren?

Aufgabe 3

  • Schreibe eine Funktion in Bash, die den Quadratwert einer gegebenen Zahl berechnet und ausgibt.
  • Die Funktion soll den Namen "square" haben und einen Parameter "num" entgegennehmen.

Aufgabe 4

  • Schreiben Sie ein Skript unter Verwendung von Funktionen.
  • Übergeben Sie dem Skript ein TODO-Parameter(mac,ping,port) und eine IP
  • Folgendes soll festgestellt werden:
    • Welche Mac Adresse hat die IP
    • Ist der Rechner online
    • Welche TCP Ports bis 1024 sind offen?




Aufgabe 5

  • Schreiben Sie eine Funktion der sie eine IP Adresse übergeben. Es soll die IP Adresse in eine Dezimal Zahl umwandeln.

Aufgabe 6

  • Schreiben Sie eine Funktion der sie eine IP Adresse übergeben. Es soll die IP Adresse in eine Hexadezimal Zahl umwandeln.