无法通过 socat 读取虚拟串行端口启动阶段的警告

无法通过 socat 读取虚拟串行端口启动阶段的警告

我正在尝试在 VirtualBox 上部署 Docker 映像(转换为 vmdk - Sata 控制器 - 创建 vdi)。

这是我通过自动化来完成的,在此阶段,我已经在虚拟机上启用了串行端口“主机设备”>“path/to/file”,以便我可以在部署阶段使用 socat 读取并根据提示输入。

在初始化阶段,当虚拟机启动时,屏幕上会显示警告,但 socat 不会捕获该警告,而是显示下一步,即输入密码,并跳过显示此警告(如下)。

在此处输入图片描述

经过进一步的故障排除后,我发现 socat 故意放置/转换换行符并添加多个 ^M,因此我认为这个警告被跳过了。

有没有办法可以做到:1. 让 socat 不必要地输入 ^M。2. 或者禁用此提示?

顺便说一下,我使用的 socat 命令是:

socat - /path/to/file,ignoreeof

或者这可能与波特率或其他设置有关(顺便说一句,我尝试了不同的速率但没有运气,因为如果我指定波特率,socat 就无法读取虚拟端口)

答案1

如果/path/to/file是命名管道,为什么不使用它tee来捕获管道的输出,将其写入真实文件并同时在终端上监视它?就像cat /path/to/file | tee /tmp/serial.log

如果我理解正确的话,在要求输入密码之前您无需输入任何内容,并且在此之前会显示警告。然后您可以/tmp/serial.log使用less或文本编辑器进行检查,并阅读所有可读内容。

相关内容