Se você tiver o aplicativo Mirth já escutando na porta 10004, então você não pode ter netcat
também escutando na mesma porta (o -l
flag denota listen ). Talvez você pretendesse escrever no porto em vez de ouvi-lo:
# Connect once and write many messages
( while :; do echo MSH....; sleep 3; done ) | nc -vvv localhost 10004
ou
# Connect for each message
( while :; do echo MSH.... | nc -vvv localhost 10004; sleep 3; done )
Esteja ciente de que existem várias implementações diferentes de netcat
. Toda implementação parece lidar com um subconjunto de flags diferente ...
Com base nas novas informações da sua pergunta, veja outra possível solução:
MESG=
while IFS= read -r LINE || test -n "$MESG"
do
if test -n "$LINE"
then
# Build the message block
test -z "$MESG" && MESG="$LINE" || MESG=$(printf "%s\n%s" "$MESG" "$LINE")
continue
fi
# Send the message block to the service
echo "$MESG" | nc -vvv localhost 10004
MESG=
sleep 3
done < /path/to/your/messagefile.txt