Aufgaben Bash function: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Aufgabe 1 = * Erstellen Sie eine Funktion ''my-ips'' in ihrer .bashrc, die alle konfigurierten IPv4 Adressen ohne Netzmaske anzeigt * '''vim ~/.bashrc''' <…“)
 
 
(13 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
 +
<!-- * '''vim ~/.bashrc''' -->
 +
<!-- <syntaxhighlight lang=bash> -->
 +
<!-- ... -->
 +
<!-- function my-ips() { -->
 +
<!-- ip a | grep "^\s*inet " | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1 -->
 +
<!-- } -->
 +
<!-- ... -->
 +
<!-- </syntaxhighlight> -->
 +
<!-- * '''source ~/.bashrc''' -->
 +
= 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?
 +
<!-- * '''vim test.sh''' -->
 +
<!--  my-ips -->
 +
<!-- * '''bash test.sh''' -->
 +
<!--  bash: my-ip: Kommando nicht gefunden. -->
 +
<!-- * '''vim ~/.bashrc''' -->
 +
<!-- <syntaxhighlight lang=bash> -->
 +
<!-- ... -->
 +
<!-- function my-ips() { -->
 +
<!-- ip a | grep "^\s*inet " | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1 -->
 +
<!-- } -->
 +
<!-- export -f my-ips -->
 +
<!-- ... -->
 +
<!-- </syntaxhighlight> -->
 +
<!-- * '''source ~/.bashrc''' -->
 +
<!-- * '''bash test.sh''' -->
 +
<!--  127.0.0.1 -->
 +
<!--  192.168.178.81 -->
 +
<!-- * 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:
  
* Erstellen Sie eine Funktion ''my-ips'' in ihrer .bashrc, die alle konfigurierten IPv4 Adressen ohne Netzmaske anzeigt
+
bash
 +
Copy code
 +
#!/bin/bash
  
* '''vim ~/.bashrc'''
+
# Definition der Funktion square
<syntaxhighligh lang=bash>
+
square() {
...
+
  local num=$1
function my-ips() {
+
  local result=$((num * num))
ip a | grep "^\s*inet " | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1
+
  echo "Der Quadratwert von $num ist: $result"
 
}
 
}
...
 
</syntaxhighligh>
 
* '''source ~/.bashrc'''
 
  
= Aufgabe 2 =
+
# 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?
  
* 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 Defin
 
  
* '''vim test.sh'''
 
  
my-ips
 
  
* '''bash test.sh'''
 
  
bash: my-ip: Kommando nicht gefunden.
 
  
* '''vim ~/.bashrc'''
+
<!--
<syntaxhighligh lang=bash>
+
<syntaxhighlight lang=bash>
...
+
#!/bin/bash
function my-ips() {
+
TODO=$1
ip a | grep "^\s*inet " | tr -s " " | cut -d " " -f 3 | cut -d "/" -f 1
+
IP=$2
 +
function info-arp()
 +
{
 +
ip neigh ls $IP | cut -f -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)
 +
;;
  
export -f my-ips
+
ports)
...
+
echo host: $2 info: $1
</syntaxhighligh>
+
info-ports
* '''source ~/.bashrc'''
+
;;
* '''bash test.sh'''
+
*)
 +
echo usage $1 "arp|icmp|ports"
 +
;;
 +
esac
 +
</syntaxhighlight>
 +
-->
  
127.0.0.1
+
=Aufgabe 5=
192.168.178.81
+
*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.