diff --git a/Utility/IpFromMac.sh b/Utility/IpFromMac.sh new file mode 100644 index 0000000..89cb0e2 --- /dev/null +++ b/Utility/IpFromMac.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# === IMPORTS === +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/Log.sh" + +# === Funktionen === + +get_ip_from_mac() { + local mac="$1" + + # Aktuelle Netzwerkschnittstelle und Subnetz ermitteln + local subnet=$(ip -o -4 addr show | awk '$2 != "lo" {split($4, a, "/"); print a[1] "/" a[2]}' | head -n 1) + + if [[ -z "$subnet" ]]; then + log "Fehler: Konnte Subnetz nicht ermitteln." + return 1 + fi + + log "Scanne Netzwerk $subnet nach MAC-Adresse $mac..." + + # Netzwerk nach der MAC-Adresse scannen + local ip=$(sudo nmap -sn "$subnet" | grep -B 2 -i "$mac" | awk '/Nmap scan report/{print $5}') + + if [[ -z "$ip" ]]; then + log "Fehler: Keine IP für MAC-Adresse $mac gefunden." + return 1 + fi + + echo "$ip" + return 0 +}