我只能通过串行方式访问服务器,并且我正在尝试使用 telnet 访问其 BIOS(这不是直接串行,而是远程串行连接)。
我的 telnet 当然到达了服务器,因为我可以看到它启动失败,但我想用Ctrl+ Alt+重新启动它Del,但是这是由我的本地计算机捕获的。 F 键似乎也被我的本地计算机捕获。
Ctrl对于 RHEL telnet 应用程序,发出+ Alt+的默认方法是什么Del?
对于 RHEL telnet 应用程序,发出 F 键的默认方法是什么?
答案1
大多数 BIOS 接受各种版本的 vt100 键盘转义序列作为功能键。例如,戴尔控制台重定向指南列出等价物:
F7 <Esc> <Shift>ov or <Esc> [ 1 8 ~
还有一些额外的非标准序列,例如
<Ctrl><Alt><Del> <Esc> <Shift>r <Esc> r <Esc> <Shift> r
(当然<Shift>ov
你会打字OV
)。不幸的是,这些按键序列通常必须非常快速地键入,因为字符之间通常只允许很小的超时。
通过 telnet 发送此类序列的一种方法是让终端仿真器在某种绑定时生成字符串。这非常依赖于终端仿真器。
另一种方法是断开 telnet 并运行命令以通过新的 telnet 连接仅发送序列。例如,为了进行测试,此expect 脚本执行登录并发送F7 序列( \033\[18~
)。
#!/bin/expect -f
spawn telnet localhost
expect login:
send myuserid\r
expect Password:
send mypassword\r
expect "\$ "
send "echo hi\r"
expect "hi"
expect "\$ "
send "dd count=6 bs=1 | od -c\r"
send "\033\[18~\r"
expect "\$"
send "echo hi\r"
expect "hi"
send_user "done\n"
显然,您不需要登录BIOS,所以您可能只需
#!/bin/expect -f
spawn telnet remotebios
expect "Connected to "
send "\033\[18~"
你也可以尝试更简单的
echo -e '\033[18~' | nc remotebios 23