通过 wget 作为 post-data 发送多行命令输出

Sending multiline command output via wget as post-data

我正在尝试 运行 一个命令,该命令将发送一个 POST 请求,其中的数据是另一个命令的结果。举个例子说明一切:

wget -O- --post-data=$(ls -lah) http://192.168.30.53/api/v2/network/clients

这显然是错误的,但我不知道如何在将 ls -lah 命令的值作为参数传递之前“转义”它。

如果需要,当前输出:

wget: invalid option -- '>'
wget: --wait: Invalid time period '-r--r--'

你没有转义——你引用了用法。使用 shellcheck 检查您的脚本。

... --post-data="$(ls -lah)" ...

I have no idea how to "escape" the value of ls -lah command before passing it as a parameter.

wget man page 统一描述 --post-data=string--post-file=file,与本例相关的是

--post-data sends string as data, whereas --post-file sends the contents of file. Other than that, they work in exactly the same way.

还有那个

argument to "--post-file" must be a regular file

由于上述限制,管道标准输入将无法工作,但这不是问题,除非您禁止创建普通文件 - 只需为此创建临时文件,类似的东西

ls -lah > lsdata
wget -O- --post-file=lsdata http://192.168.30.53/api/v2/network/clients
rm lsdata

应该可以(我没有能力测试)