Script Bash para executar ping em vários hosts em janelas de terminal escalonadas

Script Bash para executar ping em vários hosts em janelas de terminal escalonadas

Eu quero:

  1. abra 5 janelas de terminal
  2. use cada janela do terminal para executar ping em um host distinto na rede (continuamente)

Atualmente eu faço isso manualmente todas as vezes para descobrir o que está acontecendo na minha terrível rede doméstica.... Além disso, gostaria de saber se existe um bom livro para eu aprender scripts bash. é impressionante.

Agradeço toda a ajuda que puder obter antecipadamente.

atualmente é isso que eu faço

Responder1

Você pode optar por fazer isso por meio de um script (supondo que você trabalhe com gnome-terminalIPv4). Abaixo, abro uma janela de terminal para cada endereço IP pingado e escalono essas janelas em uma quantidade de pixels que você pode ajustar. Cada janela do terminal Gnome é identificada com um título que contém o IP do ping:

Depois de criar seu script, por exemplo my_ping.sh, certifique-se de torná-lo executável, com:

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

Versão 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

Versão B

Talvez você queira fornecer a lista de endereços IP para executar ping como argumentos para o 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, e pelo menos na "Versão B", você provavelmente deve certificar-se de que os endereços IP sejam verificados por tipo pelo script. Você faria isso no script antes do forloop. HTH.

informação relacionada