Скрипт Bash для пингования нескольких хостов в разнесенных терминальных окнах

Скрипт Bash для пингования нескольких хостов в разнесенных терминальных окнах

Я хочу:

  1. открыть 5 окон терминала
  2. использовать каждое окно терминала для отправки ping-запроса на отдельный хост в сети (непрерывно)

В настоящее время я делаю это вручную каждый раз, чтобы выяснить, что происходит в моей ужасной домашней сети... Также я хотел бы узнать, есть ли хорошая книга, по которой я мог бы самостоятельно изучить скриптинг bash. Она впечатляет.

Заранее благодарен за любую помощь.

в настоящее время это то, что я делаю

решение1

Вы можете сделать это с помощью скрипта (предполагая, что вы работаете с gnome-terminalIPv4). Ниже я открываю окно терминала для каждого пингуемого IP-адреса и разношу эти окна на количество пикселей, которое вы можете настроить. Каждое окно терминала Gnome идентифицируется заголовком, который содержит пингуемый IP:

После того, как вы создали свой скрипт, например my_ping.sh, убедитесь, что вы сделали его исполняемым, с помощью:

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

Версия А

$ 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

Использование:$ my_ping.sh

Версия Б

Возможно, вы захотите предоставить список IP-адресов для пингования в качестве аргументов скрипта 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

Использование:$ my_ping.sh 8.8.8.8 8.8.4.4 192.168.1.1 [...]


В идеале и по крайней мере в "Версии B" вам, вероятно, следует убедиться, что IP-адреса проверяются скриптом на соответствие типам. Вы бы сделали это в скрипте перед циклом for. HTH.

Связанный контент