Einführung
In diesem Projekt lernst du, wie du ein Zsh-Skript erstelst, das den Netzwerkkommunikationsstatus eines bestimmten Ports überwacht. Das Skript wird die Anzahl der gesendeten und empfangenen Datenpakete auf dem angegebenen Port innerhalb eines Zeitraums von 3 Sekunden zählen.
👀 Vorschau
## Beispiel
$ sh /home/labex/project/netcheck.sh 22
Pakete: 2
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du ein Zsh-Skript erstelst, das eine Portnummer als Eingabeparameter akzeptiert
- Wie du die
tcpdump-Befehl verwendest, um Pakete für den angegebenen Port zu erfassen und zu zählen - Wie du einen Zeitüberschreitung von 3 Sekunden für die Skriptausführung mit dem
timeout-Befehl einstellst - Wie du die Anzahl der Pakete in einem benutzerfreundlichen Format ausgibst
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Ein Skript zu entwickeln, das den Netzwerkkommunikationsstatus eines bestimmten Ports überwachen kann
- Verstehen, wie du in einem Zsh-Skript übliche Linux-Befehle wie
tcpdumpundtimeoutverwendest - Erfahrung im Schreiben und Testen von Shell-Skripten zur Lösung praktischer Probleme gewinnen
Erstelle das netcheck.sh-Skript
In diesem Schritt erstelst du das netcheck.sh-Skript, das die Anzahl der gesendeten und empfangenen Pakete für einen angegebenen Port innerhalb eines Zeitraums von 3 Sekunden zählt.
- Öffne einen Texteditor und erstelle in das Verzeichnis
/home/labex/projecteine neue Datei namensnetcheck.sh. - Füge dem
netcheck.sh-Skript folgenden Code hinzu:
#!/bin/zsh
## Dieses Skript zählt die Anzahl der gesendeten und empfangenen Pakete für einen angegebenen Port innerhalb eines Zeitraums von 3 Sekunden mithilfe von tcpdump.
## Überprüfen, ob das Portnummer-Argument angegeben wurde
if [ $## -eq 0 ]; then
echo "Bitte geben Sie die zu zählende Portnummer als Argument an."
exit 1
fi
## Holen Sie sich die eingegebene Portnummer
port=$1
## Verwenden Sie den timeout-Befehl, um einen Zeitüberschreitung von 3 Sekunden festzulegen und verwenden Sie tcpdump, um die Anzahl der Pakete für den angegebenen Port zu zählen
packages=$(timeout 3 tcpdump -c 0 -i any "port $port" 2> /dev/null | wc -l)
## Geben Sie die Anzahl der Pakete aus
echo "Pakete: $packages"
- Speichere die
netcheck.sh-Datei.
Teste das netcheck.sh-Skript
In diesem Schritt testest du das netcheck.sh-Skript, um sicherzustellen, dass es wie erwartet funktioniert.
- Öffne ein Terminal und navigiere zum Verzeichnis
/home/labex/project. - Führe das
netcheck.sh-Skript mit der Portnummer22als Argument aus:
sh /home/labex/project/netcheck.sh 22
- Das Skript sollte die Anzahl der gesendeten und empfangenen Pakete auf Port
22innerhalb des 3-Sekunden-Zeitraums ausgeben, z. B.:
Pakete: 2
- Versuche, das Skript mit verschiedenen Portnummern auszuführen, um sicherzustellen, dass es richtig funktioniert.
Verstehe das netcheck.sh-Skript
In diesem Schritt wirst du den Code im netcheck.sh-Skript verstehen.
- Das Skript beginnt mit einer Shebang-Zeile
#!/bin/zsh, um anzugeben, dass es mit der Zsh-Shell ausgeführt werden soll. - Das Skript überprüft, ob ein Portnummer-Argument angegeben wurde. Wenn nicht, gibt es eine Fehlermeldung aus und beendet sich.
- Das Skript weist die angegebene Portnummer der Variablen
portzu. - Das Skript verwendet den
timeout-Befehl, um einen Zeitüberschreitung von 3 Sekunden festzulegen und verwendet dann dentcpdump-Befehl, um die Anzahl der Pakete für den angegebenen Port zu zählen. Die Option-c 0告诉tcpdump,捕获所有数据包,而"port $port"过滤器确保只计算指定端口的数据包。 - Das Skript fängt die Ausgabe des
tcpdump-Befehls ab und zählt die Anzahl der Zeilen mitwc -l, was die Gesamtzahl der Pakete angibt. - Schließlich gibt das Skript die Anzahl der Pakete aus mit
echo "Pakete: $packages".
Herzlichen Glückwunsch! Sie haben erfolgreich das netcheck.sh-Skript erstellt und getestet, um den Netzwerkkommunikationsstatus zu überwachen. Sie können das Skript gerne weiter erkunden und an Ihre Bedürfnisse anpassen.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben dieses Projekt abgeschlossen. Sie können in LabEx weitere Übungen absolvieren, um Ihre Fähigkeiten zu verbessern.



