为何echo通过netcat发指令给T3PS3000失败,printf却正常?
差异原因
echo 命令默认会在输出的字符串末尾自动追加一个换行符(\n),而 printf 命令会严格按照输入的字符串内容输出,不会额外添加任何字符。
Teledyne LeCroy T3PS3000电源的SCPI远程控制指令解析逻辑要求指令严格匹配定义格式,不接受末尾携带多余换行符的请求,因此echo传递的带额外换行的指令会被设备判定为非法指令无法执行,printf传递的纯指令内容可以被正常识别。
如果需要使用echo发送指令,可添加-n参数取消默认的末尾换行追加,修改后的命令也可正常执行:
echo -n 'measure:voltage? ch1' | timeout 0.2 nc 192.168.0.1 5025
相关补充
- 若无需毫秒级超时,也可以给
netcat添加-w参数设置超时时间,不过该参数仅支持整数秒级的超时配置,示例如下:printf '%s' "my command to send" | nc -w1 192.168.0.1 5025 - 该设备官方确认采用socket通信,默认端口为5025,指令接口说明可查阅官方快速入门手册的第3章「远程控制」章节。
内容的提问来源于stack exchange,提问作者Gabriel Staples
相关产品推荐
相关产品推荐

