web-dev-qa-db-ja.com

netcatから受信したデータを引数として別のスクリプトに渡す方法は?

単純なbashncスクリプトがあります:

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

TCP接続の4444ポートをリッスンします。受信したデータをfilename.outにリダイレクトする代わりに、可能であれば、データの各チャンク(1行のテキスト)を引数としてscript.shに渡したいと思います。それ、どうやったら出来るの?

前もって感謝します。

編集:私も試しました:

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

しかし、それは機能しません

3

以下は、複数入力スクリプトへのエントリポイントです。

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

# your script's payload here

#!行は自明です

2行目

$# -ge 1そして少なくとも1つのコマンドライン引数をテストしています

-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コマンドからのもので、どちらの方法でも機能しました。これがあなたが求めていることだといいのですが

2
MelBurslan