我正在尝试在 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
或文本编辑器进行检查,并阅读所有可读内容。