首页 > 解决方案 > 使用 spawn -open 时,Bash Expect 不响应击键

问题描述

当机器通过该目标机器的串行重定向启动时,我期望 bash 进入 BIOS 设置。以下是我spawn用来读取和写入串行端口的脚本,但用于进入 BIOS 的击键(Del)在该脚本中没有响应

set timeout -1
match_max 100000
set port /dev/ttyUSB0
set rate 115200

exec stty -F $port $rate
spawn -open [open $port w+]

expect "American Megatrends"
sleep 1
send -- "^\[\[3~"
send_user "\nok\n"

最后一行“ok”被打印出来,这意味着我的关键字是预期的,但它没有进入 BIOS 设置

同时在另一个脚本中,它可以读取和写入screen /dev/ttyUSB0 115200能够发送击键并成功进入 BIOS 设置。

有人可以帮忙吗?谢谢。

标签: linuxexpect

解决方案


^[表示CTRL-[哪个是 ESC 字符(0x1b 或 033),所以你可以这样尝试:

send -- "\033\[3~"

推荐阅读