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