Упрощенный сценарий:
У меня есть телефонная система, которая регистрирует каждую операцию на порту 6543. У меня также есть слушатель (существующее приложение), который подключается к телефонной системе (Linux-ящик) и обрабатывает все данные (поток байтов), поступающие из этой телефонной системы. . Телефонная система может иметь только ОДНО соединение одновременно.
Что мне нужно:
Способ подключиться к телефонной системе и сбросить поток байтов в файл и позволить приложению-слушателю (которое я не контролирую, но возможность настроить IP и порт, к которому он будет подключаться) подключиться к моему процессу, чтобы оно работало как если он был напрямую подключен к телефонной системе.
Что я хочу сделать:
Должно быть что-то умное, что я просто не могу придумать / не знаю, чтобы это сделать?
То, что я называю "утилитой", может быть сценарием 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
...
Интересно, могу ли я мультиплексировать вывод, чтобы я мог несколько раз подключаться к своему ящику и получать поток для всех подключений ...