Most bios accept various versions of the vt100 keyboard escape sequences for function keys. For example, the dell console redirection guide lists amongst others the equivalents:
F7 <Esc> <Shift>ov or <Esc> [ 1 8 ~
and also some extra non-standard sequences like
<Ctrl><Alt><Del> <Esc> <Shift>r <Esc> r <Esc> <Shift> r
(For <Shift>ov you would type OV of course). Unfortunately, these key sequences often have to be typed very rapidly, as only a small timeout is usually allowed between characters.
One way of sending such a sequence through telnet is to get your terminal emulator to generate the string upon some binding. This is very terminal emulator dependant.
Another is to disconnect your telnet and run a command to send just the sequence through a new telnet connection. For example, for testing, this expect script does a login and sends the F7 sequence (\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"
Obviously, you won't need to login to your bios, so you might just have
#!/bin/expect -f
spawn telnet remotebios
expect "Connected to "
send "\033\[18~"
You can also try more simply
echo -e '\033[18~' | nc remotebios 23
<ESC>R<ESC>r<ESC>R.