netcatから受け取ったデータをパラメータとして他のスクリプトに渡す方法は?

netcatから受け取ったデータをパラメータとして他のスクリプトに渡す方法は?

単純なbashスクリプトがありますnc

#!/bin/bash
nc -k -l 127.0.0.1 4444 > filename.out

4444ポートから接続をリッスンしますTCP。可能であれば、受信したデータをにリダイレクトせずにfilename.out各データの塊(テキスト行)をscript.shパラメータとして渡したいと思います。どうすればいいですか?

よろしくお願いします。

編集:私も次のことを試しました。

#!/bin/bash
nc -k -l 127.0.0.1 4444 | /path/to/script.sh

しかし、これはうまくいきません

ベストアンサー1

以下は、マルチ入力スクリプトのエントリポイントです。

#!/bin/bash
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"

# your script's payload here

#!この文が自明になることを願っています。

2行目に

$# -ge 11つ以上のコマンドライン引数をテストしています。

-a ブール値と演算子です。

-f "$1"最初の引数がファイルかどうかをテストする

&&以下は、前の条件が真の場合に実行されるコマンドです。

||以下は、テスト条件が維持されない場合に発生する状況です。

nc -k -l 127.0.0.1 4444 > filename.out
my_processing_script filename.out

-または-

nc -k -l 127.0.0.1 4444 | my_processing_script

したがって、パラメータがあり、ファイルの場合は入力はファイルで、そうでない場合は入力はパイプから来ます。"-"

これにより、必要に応じてタスクを実行できます。誰でも

私がテストしたペイロードは

awk '{print $2}' ${input}

私の入力はnetstat -rnコマンドから来て、何らかの方法で動作します。私はそれがあなたが求めていることを願っています。

おすすめ記事