我需要发送一个PEM格式的证书,用于存储模块,该模块可以通过AT命令集通过/dev
中某个Linux设备节点上的串行接口进行通信。
到目前为止,我一直在使用
echo 'AT' > /dev/ttyX
发出必要的命令,它已经完成了诀窍。
在另一个终端窗口上使用cat /dev/ttyX
监控设备的任何输出。
我现在有一个用ANSI编码的证书文件。文档告诉我仅使用LF
换行符将其输入到模块,并使用Ctrl+Z
终止输入,我认为这是十六进制0x1A
。该文档还指定证书文件可能不以EOF
字符结尾。我使用十六进制编辑器来验证文件的格式是否正确。
我尝试使用echo
和printf
将证书字符/字符串发送到模块。
我试图在文件中包含0x1A字符,并在证书字符之后单独发送:
printf '\x1a' > /dev/ttyX
或者
echo -n -e '\x1a' > /dev/ttyX
该模块似乎承认0x1A
因为它停止了>
- 提示证书,并给了我最冗长的回复:ERROR
通常,我发送的证书文件内容如下:
echo -e "$(cat certfile)" > /dev/ttyX
或
printf '%b' "$(cat certfile)" > /dev/ttyX
请假设我可以访问基本的Linux shell工具(例如echo, printf, nano, stty
等),但没有选择轻松安装新工具。我使用SSH访问目标设备,pscp
将文件传输到目标设备。我也有一个Windows装备。
有什么建议我应该考虑什么?也许我错过了stty
选项? cat
在输入阶段做了些讨厌的事吗?调查即将发送到模块的实际字符数据的一个启示技巧?我错过了连串通讯的一些奇怪的问题?
如果我
printf '%b' "$(cat cert)" > ./testoutput
和
od -x testoutput
该文件在十六进制中看起来没问题(我手动重新排序od -x
的输出,它似乎成对的十六进制数字并切换它们)。例如,结尾是:
2d 2d 2d 2d 2d 45 4e 44 20 43 45 52 54 49 46 49 43 41 54 45 2d 2d 2d 2d 2d 0a 1a 00
stty
或接收端必定存在导致问题的内容。正确?
答案 0 :(得分:0)
例如,结尾是:
2d 2d 2d 2d 2d 45 4e 44 20 43 45 52 54 49 46 49 43 41 54 45 2d 2d 2d 2d 2d 0a 00 1a
等一下。在00
之前1a
在那里做什么?
那不属于。尝试删除它。