Дублирование входящего канала на дополнительный порт и одновременное сохранение с помощью socat - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь дублировать входящий канал на другой порт, сохраняя при этом входящие данные.Входящий фид - это несколько пользовательских данных, разделенных запятыми.Я пытаюсь добиться этого с помощью socat, но я несколько поражен этой возможностью и не могу полностью достичь того, что хочу.

Поэтому входящий канал отправляется в порт на моей машине, который я хочудублировать на другой порт для нескольких прослушивателей (подключений), одновременно регистрируя входящие данные в текстовом файле.

В настоящее время у меня есть следующий скрипт:

#/bin/bash

if [ "$#" -ne 3 ]; then
    echo "Illegal number of parameters"
    exit
fi

PORT=$1
LOGFILE=$2
FORWARD_PORT=$3

touch ${LOGFILE}
/usr/bin/socat -u TCP4-LISTEN:${PORT},reuseaddr,fork OPEN:${LOGFILE},creat,append &
/usr/bin/socat -u FILE:${LOGFILE},ignoreeof TCP4-LISTEN:${FORWARD_PORT},reuseaddr,fork &

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

Возможно, этого даже можно достичь в однострочникес соц.Я ищу несколько советов о том, какой вариант смотреть или как этого добиться.

...