通过 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
应该可以(我没有能力测试)
我正在尝试 运行 一个命令,该命令将发送一个 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
应该可以(我没有能力测试)