Идеи для анализа результатов netstat для активных подключений

У меня есть несколько удаленных устройств, которые создают обратные подключения ssh обратно на мой сервер, так что я ssh для них и управляю ими удаленно. Они подключаются ко мне через пользовательский порт. Когда я делаю netstat -an | grep 127.0.0.0.1: netstat -an | grep 127.0.0.0.1: на моем сервере я получаю список устройств, которые в настоящее время подключены. Результат выглядит следующим образом:

 tcp 0 0 127.0.0.1:6001 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6002 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6003 0.0.0.0:* LISTEN 

Где 600x – это порт, к которому подключено устройство. Мой вопрос таков. Я хочу создать сценарий, который я могу запустить на своем сервере, который показывает, какие устройства подключены в настоящее время. Я хочу иметь конфигурационный файл, который будет читать скрипт, который перечисляет мои устройства следующим образом:

 NORTH:6001 SOUTH:6002 EAST:6003 WEST:6004 

и скрипт будет анализировать вывод команды netstat и результат будет выглядеть так:

Активные соединения: СЕВЕР, ЮГ, ВОСТОК

Неактивные подключения: WEST

Надеюсь, это не слишком смущает. Это что-то, что можно сделать с помощью grep и awk?

Здесь три шага

  1. Просто извлеките активные имена портов из netstat

    netstat -an | grep 127.0.0.0.1: | awk -F "[ :]+" '{print $5}'

awk задает группу пробелов и двоеточий в качестве разделителей и выбирает только идентификатор порта.

  1. Сравните эти порты из файла списка устройств (например, device_list.txt ), используя grep и вывод команды на шаге 1 как шаблон

    netstat -an | grep 127.0.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -f - device_list.txt

Это даст такой результат

 NORTH:6001 SOUTH:6002 EAST:6003 
  1. Неактивные соединения можно получить, используя -v в grep

    netstat -an | grep 127.0.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -v -f - device_list.txt

Результатом этого является

 WEST:6004 

Затем вы можете создать сценарий вокруг вышеприведенного для печати в любом формате, который вы хотите