Ich versuche, ein Bash-Skript zu erstellen.Saving Mac-Adresse in einer Variablen in einem Bash-Skript und verwenden Sie es, um nach Änderungen zu suchen
- Das Script fragt den Benutzer, eine IP-Adresse
- Das Skript dann greps den
arp -a
Befehl für die Zeile, die die IP-Adresse auf. - Die MAC-Adresse wird als MAC-Variable gespeichert.
- Das Skript überprüft, dass die MAC-Adresse nicht geändert wurde.
#!/bin/bash
# Xdetect
echo "Welcome to Xdetect"
echo "Enter IP address of device to monitor (usually default gateway)"
read IP
MAC=arp -a | grep $IP | awk {'print $4'}
echo =$MAC
while : 'arp -a | grep $IP | awk {'print $4'}' = $MAC
do
echo "Mac has not changed"
sleep 2
done
Das Skript funktioniert nicht, es Schleifen und Echo MAC has not changed
auch wenn die MAC-Adresse ändert.
Kurz bevor es Schleifen ein Fehler erscheint, dass: Xdetect.sh 9: Xdetect.sh: -a: not found
Wie kann ich dieses Problem beheben?
Sie sollten ein gutes Tutorial lesen a), zum Beispiel der [BashGuide] (http://mywiki.wooledge.org/BashGuide) und/oder [Die Linux-Befehlszeile] (http: //linuxcommand.org/tlcl.php) und b) benutze http://www.shellcheck.net/ und behebe alles was es dir sagt. Erster Blick: Zuweisung der Ausgabe von Befehlen an Variablen, Parameterquotierung, Zitat für awk-Befehle, 'while' Schleifensyntax ... –
' MAC = $ (arp -a | grep $ IP | awk '{print $ 4}') 'auch 'echo $ MAC' und' while ["$ (arp -a | grep $ IP | awk '{print $ 4}')" = "$ MAC"] ' – Arash
Danke, das funktioniert perfekt. –