我可以使用 wscat 连接到 WS,我可以从控制台发送命令,但我不知道如何从脚本传递命令。我尝试了几种方法,并且总是在传递命令之前关闭 WAS。
一般来说,我想要的东西会: 1. 连接到 WS 2. 从列表中一一发送命令 3. 将输入和输出保存到文件
wscat对于这项工作来说,这是一个选择不当的工具;它并不是为了遵循适合脚本使用的约定而编写的(例如在 stderr 而不是 stdout 上保留提示;或者在输出不是 TTY 时抑制提示;或者将 EOF 视为关闭连接的信号)。请考虑websocat:
#!/usr/bin/env bash
runscript() {
commands=( "first command" "second command" "third command" )
for command in "${commands[@]}"; do
echo "Writing command to server" >&2
echo "$command"
echo "Reading response from server (assuming exactly one line)" >&2
read -r line
echo "Received response: $line" >&2
done
# kill websocat, even if the websocket doesn't get closed
kill "$PPID"
}
export -f runscript
websocat ws://echo.websocket.org sh-c:'exec bash -c runscript'
Run Code Online (Sandbox Code Playgroud)
对于简单的事情,您可以使用-x参数给出wscat一些 JSON 在建立连接后发送,例如:
wscat --connect ws://example.com -w 1 -x '{"action": "helloWorld"}'
Run Code Online (Sandbox Code Playgroud)
发送消息后,将-w 1等待一秒钟,以防回复。
当然,这样做会连接到 WebSocket,发送消息,等待给定时间的回复,然后断开连接,因此如果您需要保持消息之间的连接打开,那么这不是一个很好的选择。
| 归档时间: |
|
| 查看次数: |
8426 次 |
| 最近记录: |