系统相关
首页 > 系统相关> > linux – 强制telnet / ssh使用crtl-H作为退格

linux – 强制telnet / ssh使用crtl-H作为退格

作者:互联网

我有一些设备连接到思科串行术语服务器;当我直接telnet到思科的端口时,许多工作正常.但是,我有一些不会使用Backspace的顽固设备,因为它默认映射到telnet.

如果它很重要,我在Debian squeeze(在X Window中)从rxvt telnet. TERM设置为rxvt,但无论我使用vt100,vt101还是xterm都无关紧要……更改TERM无效.我开始根据我在old Kermit FAQ中看到的更改TERM的道路.FWIW,stty erase ^ h和stty erase ^?也不工作.

我注意到如果我使用netcat的原始TCP套接字,Backspace在这些设备上正常工作…即nc 192.168.12.117 2006;然而,我遇到其他问题,密码未隐藏或终端分页.

如何有选择地强制telnet和ssh将Backspace映射到CtrlH以用于这些设备?另外,我应该使用什么标准来评估这是否是设备中的错误?

编辑

如果它很重要,这是showkey的输出-a对于有问题的键…… ^?对应Backspace,^ H是CtrlH.当我看到The Linux Keyboard and Console Howto时,似乎我应该越来越近,但我似乎无法破译我能做些什么来改变这一点.我尝试过使用loadkeys的各种咒语无效.

[mpenning@hotcoffee docs]$sudo showkey -a

Press any keys - Ctrl-D will terminate this program

^?      127 0177 0x7f
^H        8 0010 0x08

我还包括dumpkeys的相关输出……这是我系统中的当前映射(在某些设备上不起作用).如果我能弄清楚如何让Backspace与CtrlH做同样的事情,我会有一个解决方案.

[mpenning@hotcoffee docs]$sudo dumpkeys | grep -Ei "backspace|127"
keycode   8 = BackSpace        ampersand        braceleft       
keycode  14 = BackSpace        Delete          
        control keycode  14 = BackSpace       
keycode 127 =
[mpenning@hotcoffee docs]$

解决方法:

我终于在Anne Baretta’s Linux Keyboard Hall of Shame中找到了答案……似乎在xterm / rxvt中更改键映射对telnet没有好处.

当我嗅到telnet连接时,我验证了这一点.首先,我嗅探了telnet会话,发现Backspace向主机发送了0x7f.接下来,我故意使用stty erase $在rxvt中打破Backspace(从而将我的Backspace映射到rxvt中的美元符号).执行此操作后,我不得不在rxvt中按$退格,但是当我在远程主机上使用Backspace时,telnet仍然发送了0x7f.

创建一个名为kbdfix(下面)的脚本,并使其具有755权限的可执行文件;您将需要tclsh并期望从您的分发存档加载的包.

#!/usr/bin/expect

#Name this file as kbdfix and make it executable in your path
eval spawn -noecho $argv

interact {
 \177        {send "\010"}
 "\033\[3~"  {send "\177"}
}

现在连接到损坏的主机,我键入kbdfix telnet 192.168.12.117 2006,Backspace工作.

请注意上述2006年之前混淆的任何人…这是Cisco术语服务器用于与损坏设备(在本例中为Brocade FCX交换机)的控制台的串行连接的TCP端口.

如果您只是远程登录到不喜欢Backspace的设备,您可以使用kbdfix telnet< addr_of_the_broken_device>.当我使用具有类似问题的DLink DGS-3200以太网交换机时,我也在使用ssh;语法是kbdfix ssh 172.16.1.26.

标签:linux,terminal,telnet,terminal-emulator,rxvt
来源: https://codeday.me/bug/20190809/1633909.html