Мост / прокси-соединение TCP-соединения для ведения журнала

Упрощенный сценарий:

У меня есть телефонная система, которая отключает каждую операцию на порту 6543. У меня также есть слушатель (существующее приложение), который подключается к телефонной системе (Linux-бокс) и обрабатывает все данные (поток байтов), поступающие из этой телефонной системы. Телефонная система может иметь только ОДНО подключение одновременно.

Что мне нужно:

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

Что я хочу сделать:

  1. Подключиться к телефону системы и выгрузите данные в файл (используя «служебную программу», которую я хочу, чтобы вы мне предложили).
  2. Разрешите процессу-слушателю подключиться к «служебной программе», чтобы он мог продолжать работать в обычном режиме.

Должно быть что-то умное, что я просто не могу придумать / не знаю, чтобы сделать это?

То, что я называю "утилитой", может быть сценарием bash, утилитой un * x, каким-нибудь умным инструментом GNU, любым существующим проектом на github, и т. д.

1
задан 6 September 2019 в 22:33
1 ответ

Вот что я нашел на данный момент:
(возможно, я искал netcat!)

mkfifophonesystem.fifo

Сценарий:

#!/bin/bash
PHONE_IP=192.168.167.166
PHONE_PORT=6543
LISTENING_PORT=${PHONE_PORT}
CURRENT=$(date +%F#%T | sed -e 's/:/./g')

cat phonesystem.fifo | nc -l -p ${LISTENING_PORT} | tee ${CURRENT}.ApplicationListener.log | nc ${PHONE_IP} ${PHONE_PORT} | tee ${CURRENT}.PhoneSystem.log 1> phonesystem.fifo

Затем я настрою свое "приложение-слушатель" для подключения к IP-адресу моего ящика через порт 6543 вместо подключения его к IP-адресу телефонной системы на порту 6543 ...

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

0
ответ дан 4 December 2019 в 02:46

Теги

Похожие вопросы