Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

mkfifo phonesystem.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...

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