Aufgaben Bash function: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Linkai.zhang (Diskussion | Beiträge)
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 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)
;;


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.