【发布时间】:2022-01-03 07:25:57
【问题描述】:
我只是坚持使用调用 ws 命令(网络套接字)的自编码应用程序,我正在尝试导出输出。我还想在从 JSON 后端开发的 API 输入一段时间后完成 wscat 退出
#!/bin/bash
while getopts a:c: flag
do
case "${flag}" in
a) accesskey=${OPTARG};;
c) clientnodeid=${OPTARG};;
esac
done
master="wscat -c ws://localhost:8091/ws/callback -H accessKey:$accesskey -H clientNodeId:$clientnodeid"
sleep 15
eval $master
final=$(eval echo "$master")
echo $final >>logfile.log
ps -ef | grep wscat | grep -v grep | awk '{print $2}' | xargs kill
#curl -X POST --data "$final" -k "https://localhost:7460/activate" -H "accept: application/json" -H "accessKey:$accesskey" -H "clientNodeId:$clientnodeid" -H "Content-Type: application/json" -H "callbackRequested:true"
exit
我想调用然后从 wscat 输出以通过 curl 发送 当我手动运行脚本时它成功了,但是当我从另一个应用程序(java)调用它时它正在运行但不生成日志。
总之,我想将 $final 导出到文本文件,我应该将该文本文件导入到 curl 调用的 --data 中
【问题讨论】:
-
顺便说一句:你可以用
pkill wscat替换ps -ef | grep wscat | grep -v grep | awk '{print $2}' | xargs kill。 -
将完整路径添加到
logfile.log? -
谢谢!您是否有一些 cmets 为什么它不能从 master= 变量生成完全输出?我都试过了......当我手动运行时它保存到 /root 目录,没关系吗?
-
final=$(eval echo "$master")与final=$master相同。由于echo,它不会执行wscat。 -
如果要捕获
wscat的输出,请使用final=$(eval "$master")
标签: bash sockets curl websocket ws