来自脚本的wscat命令,如何传递

时间:2018-02-21 17:37:29

标签: bash websocket

我可以使用wscat连接到WS,我可以从控制台发送命令,但我不知道如何从脚本传递命令。 我已经尝试了一些方法,并且在命令通过之前总是关闭WAS。

一般来说,我会找到一些东西: 1.连接到WS 2.从列表中逐个发送命令 3.将输入和输出保存到文件

2 个答案:

答案 0 :(得分:1)

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'

答案 1 :(得分:0)

为简单起见,您可以使用<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 参数为-x建立连接后发送一些JSON,例如:

wscat

wscat --connect ws://example.com -w 1 -x '{"action": "helloWorld"}' 将在发送邮件后等待一秒钟,以防万一有任何回复。

当然,这样做是连接到WebSocket,发送消息,等待给定的时间进行回复,然后断开连接,因此,如果需要保持消息之间的连接打开,这不是一个好选择。