為什麼這篇linux telnet指令鄉民發文收入到精華區:因為在linux telnet指令這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者zi98btcc (幼斤)看板Linux標題[問題] telnet客端送出指令與伺服端動作時間W...
當你使用ptt bbs telnet客端軟體連到ptt伺服器時,
隨便按下任一按鍵,會發生什麼事?會不會遇到超乎預期的反應?
這是有可能的,因為:
1.不同客端軟體相同按鍵送出代碼不一定一樣,
2.不同伺服端對相同代碼反應動作不一定一樣,
** 1.telnet客端軟體有很多種,例如windows內建的telnet.exe,
pcman,kkman,firefox的附加元件'BBSFox'等,
基本上大同小異,以下按鍵每個軟體送出代碼應該都一樣,例如:
U 0x55
u 0x75
esc 0x1b
tab 0x09
backspace 0x08
以上代碼都與ascii-code表一致,
那如果按 ctrl+a 等會送出什麼代碼?答案如下
ctrl+h 0x08
ctrl+i 0x09
ctrl+u 0x15
ctrl+l 0x0c
ctrl+k 0x0b
ctrl+e 0x05
ctrl+d 0x04
ctrl+a 0x01
以上就無法從ascii-code表查出,
另外像是home end 方向鍵送出的代碼就不只1byte,而是3-4 bytes,如下
home 1B 5B 31 7E
end 1B 5B 34 7E
up 1B 5B 41
down 1B 5B 42
right 1B 5B 43
left 1B 5B 44
以上所說按鍵代碼,無論用kkman pcman telnet.exe送出應該都一樣,
但還是有小差異,例如telnet.exe按'DELETE'鍵送出1bytes的代碼 0x7f
而firefox的附加元件'BBSFox'按'DELETE'鍵送出4bytes的代碼 1B 5B 33 7E
如何得知按鍵送出的代碼?可以用以下軟體SmartSniff監視連線封包就知道,
http://www.nirsoft.net/utils/smsniff.html
** 2.當你按下 ctrl+u 應該會送出1byte大小的代碼 0x15 ,
那伺服器端收到代碼 0x15 會做什麼事?
一般而言,在命令列模式下,ctrl+u (0x15)會將游標左側那一行清除,
但這不是絕對的,因為伺服端有不同版本linux,不同shell環境,
而且也應該可以更改ctrl+u做其他事,
我的問題:目前我登入的telnet伺服端是linux bash shell環境,
bash shell會在命令列執行delete動作:(將游標所在或右側刪去一個字元)
但是只接受ctrl+d(0x04) 或 (1B 5B 33 7E)兩個代碼才會精準執行delete動作,
也就是說把游標移到想刪除的字元,可以按ctrl+d刪除,也可慢慢打四個按鍵,
ESC [ 3 ~ (1B 5B 33 7E),來刪除字元。
請問這個要從哪裡改?改成其他代碼也可執行delete動作?
stty erase ^H 等等試過了,沒有改變,沒有用,
應該有個鍵盤設定檔可以改?請問在哪裡?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.61.219.121
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1444759025.A.35F.html