Script Bash para hacer ping a múltiples hosts en ventanas de terminal escalonadas

Script Bash para hacer ping a múltiples hosts en ventanas de terminal escalonadas

Yo quiero:

  1. abrir 5 ventanas de terminal
  2. use cada ventana de terminal para hacer ping a un host distinto en la red (continuamente)

Actualmente hago esto manualmente cada vez para descubrir qué está pasando en mi terrible red doméstica... Además, deseo saber si hay un buen libro para aprender por mi cuenta a scripts bash. es impresionante.

Agradezco toda la ayuda que pueda recibir de antemano.

actualmente esto es lo que hago

Respuesta1

Puede optar por hacer esto a través de un script (suponiendo que trabaje con gnome-terminalIPv4). A continuación, abro una ventana de terminal para cada dirección IP a la que se hace ping y escalono esas ventanas según una cantidad de píxeles que puede modificar. Cada ventana de terminal de Gnome se identifica con un título que contiene la IP a la que se hace ping:

Una vez que haya creado su script, por ejemplo my_ping.sh, asegúrese de hacerlo ejecutable, con:

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

Versión 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

Uso:$ my_ping.sh

Versión B

Es posible que desee proporcionar la lista de direcciones IP para hacer ping como argumentos para el script 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

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


Idealmente, y al menos en la "Versión B", probablemente debería asegurarse de que el script verifique el tipo de direcciones IP. Harías esto en el script antes del forciclo. HTH.

información relacionada