如何将从 netcat 接收到的数据作为参数传递给另一个脚本?

如何将从 netcat 接收到的数据作为参数传递给另一个脚本?

我有简单的 bashnc脚本:

#!/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

#!我希望这句话是不言自明的

在第二行

$# -ge 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命令并且可以以任何方式工作。我希望这就是你要问的

相关内容