Netzwerkdatenpaketstatistiken

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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 tcpdump und timeout verwendest
  • Erfahrung im Schreiben und Testen von Shell-Skripten zur Lösung praktischer Probleme gewinnen

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/wc("Text Counting") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/echo -.-> lab-301481{{"Netzwerkdatenpaketstatistiken"}} linux/wc -.-> lab-301481{{"Netzwerkdatenpaketstatistiken"}} linux/cd -.-> lab-301481{{"Netzwerkdatenpaketstatistiken"}} linux/ssh -.-> lab-301481{{"Netzwerkdatenpaketstatistiken"}} linux/netstat -.-> lab-301481{{"Netzwerkdatenpaketstatistiken"}} end

Erstellen des netcheck.sh-Skripts

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.

  1. Öffne einen Texteditor und erstelle in das Verzeichnis /home/labex/project eine neue Datei namens netcheck.sh.
  2. 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"
  1. Speichere die netcheck.sh-Datei.

Testen des netcheck.sh-Skripts

In diesem Schritt testest du das netcheck.sh-Skript, um sicherzustellen, dass es wie erwartet funktioniert.

  1. Öffne ein Terminal und navigiere zum Verzeichnis /home/labex/project.
  2. Führe das netcheck.sh-Skript mit der Portnummer 22 als Argument aus:
sh /home/labex/project/netcheck.sh 22
  1. Das Skript sollte die Anzahl der gesendeten und empfangenen Pakete auf Port 22 innerhalb des 3-Sekunden-Zeitraums ausgeben, z. B.:
Pakete: 2
  1. Versuche, das Skript mit verschiedenen Portnummern auszuführen, um sicherzustellen, dass es richtig funktioniert.

Verständnis des netcheck.sh-Skripts

In diesem Schritt wirst du den Code im netcheck.sh-Skript verstehen.

  1. Das Skript beginnt mit einer Shebang-Zeile #!/bin/zsh, um anzugeben, dass es mit der Zsh-Shell ausgeführt werden soll.
  2. Das Skript überprüft, ob ein Portnummer-Argument angegeben wurde. Wenn nicht, gibt es eine Fehlermeldung aus und beendet sich.
  3. Das Skript weist die angegebene Portnummer der Variablen port zu.
  4. Das Skript verwendet den timeout-Befehl, um einen Zeitüberschreitung von 3 Sekunden festzulegen und verwendet dann den tcpdump-Befehl, um die Anzahl der Pakete für den angegebenen Port zu zählen. Die Option -c 0告诉tcpdump,捕获所有数据包,而"port $port"过滤器确保只计算指定端口的数据包。
  5. Das Skript fängt die Ausgabe des tcpdump-Befehls ab und zählt die Anzahl der Zeilen mit wc -l, was die Gesamtzahl der Pakete angibt.
  6. 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.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Sie haben dieses Projekt abgeschlossen. Sie können in LabEx weitere Übungen absolvieren, um Ihre Fähigkeiten zu verbessern.