Bash-Skript zum Pingen mehrerer Hosts in gestaffelten Terminalfenstern

Bash-Skript zum Pingen mehrerer Hosts in gestaffelten Terminalfenstern

Ich möchte:

  1. öffne 5 Terminalfenster
  2. Verwenden Sie jedes Terminalfenster, um einen bestimmten Host im Netzwerk anzupingen (kontinuierlich).

Derzeit mache ich das jedes Mal manuell, um herauszufinden, was in meinem schrecklichen Heimnetzwerk los ist.... Außerdem würde ich gerne wissen, ob es ein gutes Buch gibt, mit dem ich mir Bash-Skripting selbst beibringen kann. Es ist beeindruckend.

Ich bin im Voraus für jede Hilfe dankbar, die ich bekommen kann.

derzeit ist das, was ich mache

Antwort1

Sie können dies über ein Skript tun (vorausgesetzt, Sie arbeiten mit gnome-terminalIPv4). Unten öffne ich ein Terminalfenster für jede angepingte IP-Adresse und staffele diese Fenster um eine Anzahl von Pixeln, die Sie anpassen können. Jedes Gnome-Terminalfenster ist mit einem Titel gekennzeichnet, der die angepingte IP enthält:

Nachdem Sie Ihr Skript erstellt haben, z. B. my_ping.sh, stellen Sie sicher, dass Sie es ausführbar machen, mit:

$ chmod a+x my_ping.sh        # see manual page for `chmod' if needed.

Version A

$ cat my_ping.sh

#!/usr/bin/bash
ip_array=(8.8.8.8 
          8.8.4.4 
          192.168.1.1) # define array with as many IPs as needed
x0=50; y0=50    # top left corner pixel coordinates of 1st term-window to open
pix_offset=50   # pixel xy-offset for subsequently staggered PING windows

for ip in "${ip_array[@]}"; do
    sizeloc="80X24+$x0+$y0"
    gnome-terminal --window \
                   --geometry="$sizeloc" \
                   --title "PING $ip" \
                   -- \ping "$ip"
    x0=$((x0+pix_offset));y0=$((y0+pix_offset))
done

Verwendung:$ my_ping.sh

Version B

Möglicherweise möchten Sie dem Skript die Liste der zu pingenden IP-Adressen als Argumente bereitstellen my_ping.sh.

$ cat my_ping.sh

#!/usr/bin/bash
x0=50; y0=50
pix_offset=50

# Include IP type-checking here if needed 
for ip in "$@"; do
    sizeloc="80X24+$x0+$y0"
    gnome-terminal --window \
                   --geometry="$sizeloc" \
                   --title "PING $ip" \
                   -- \ping "$ip"
    x0=$((x0+pix_offset)); y0=$((y0+pix_offset))
done

Verwendung:$ my_ping.sh 8.8.8.8 8.8.4.4 192.168.1.1 [...]


Idealerweise und zumindest in „Version B“ sollten Sie wahrscheinlich sicherstellen, dass die IP-Adressen vom Skript typgeprüft werden. Sie würden dies im Skript vor der forSchleife tun. HTH.

verwandte Informationen