ネットキャットの使い方

ネットキャットの使い方

私のサーバーには、空白になっているHL7メッセージを含むファイルがあります。以下の例ctrl + cを使用してスクリプトが停止するまで、連続ループで一度にこれらのメッセージの1つを送信したいと思います。私はこれに慣れていませんが、netcatnetcatを直接使用しようとすると、次のような結果がnc -l 10004得られます。

ncat: bind to :::10004: Address already in use. QUITTING.

このポートを受信するデバイスにはすでにMirthアプリケーションがあります。これが唯一の方法であれば、他のデバイスからコマンドを実行してこのデバイスに正確に送信できますが、IPに送信を使用して間隔を空けてnetcat一度に1つずつメッセージを送信するのに役立ちます。

MSH....
.......
.......

MSH....
.......

MSH....
.......
.......
.......

私が抽出するファイルには複数行のメッセージがありますが、改行で区切られています。 (空間)

ベストアンサー1

Mirthアプリケーションがすでにポート10004でリッスンしている場合、実際にはnetcat同じポートでリッスンできません(この-lフラグは聞く)。おそらく、ポートを聞くのではなく、ポートに書き込みをしたいかもしれません。

# Connect once and write many messages
( while :; do echo MSH....; sleep 3; done ) | nc -vvv localhost 10004

または

# Connect for each message
( while :; do echo MSH.... | nc -vvv localhost 10004; sleep 3; done )

さまざまな実装があることに注意してくださいnetcat。各実装は、異なるフラグのサブセットを処理するようです。


あなたの質問に関する新しい情報に基づいて考えられる別の解決策は次のとおりです。

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

おすすめ記事