Saya memiliki klien khusus yang terhubung ke Ubuntu jauh melalui websocket dan menjalankan bash di sana. Tetapi kunci seperti Del, Panah dll. Tidak berfungsi. Bagaimana saya bisa menampilkan apa yang diterima di sisi server? Tidak ada solusi yang disebutkan dalam tombol show yang ditekan dalam pekerjaan linux .
UPDATE : Saya pertama kali bertanya tentang SSH, tetapi kemudian menyadari bahwa saya mungkin tidak menggunakan SSH.
UPDATE2 : Apa yang sudah saya coba.
# showkey
Couldn't get a file descriptor referring to the console
# evtest
No device specified, trying to scan all of /dev/input/event*
USAGE:
Capture mode:
evtest [--grab] /dev/input/eventX
--grab grab the device for exclusive access
Query mode: (check exit code)
evtest --query /dev/input/eventX <type> <value>
<type> is one of: EV_KEY, EV_SW, EV_LED, EV_SND
<value> can either be a numerical value, or the textual name of the
key/switch/LED/sound being queried (e.g. SW_DOCK).
# ls /dev/input
ls: cannot access /dev/input: No such file or directory
# stty -a
speed 38400 baud; rows 300; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Pada dasarnya, saya butuh sesuatu seperti ini:
UPDATE3 : Komunikasi antara klien konsol dan server dilakukan melalui websockets di Go. Sumber - klien dan server .
Jawaban:
Hasil menunjukkan
stty -a
itu menjanjikan, tetapi tidak pertanyaan maupun jawaban lain menunjuk cara yang biasa untuk menemukan apa yang dikirim dengan kunci khusus seperti Del, Left-cursor, dllTidak jelas OP "Del" mana yang dimaksud. Saya memiliki keduanya Deletedan Deltombol pada keyboard saya (pada keypad pengeditan dan numerik). Keduanya dapat mengirim serangkaian byte data yang dimulai dengan ESC(karakter pelarian ASCII). Yaitu, di terminal reguler.
Namun, pertanyaannya disebut websocket , yang terdengar seolah-olah ini berjalan di browser web. Tangkapan layar menunjukkan beberapa jenis keyboard layar, dengan
DEL
tombol pengeditan.Jika implementasi selesai, orang akan mengharapkan sesuatu seperti ini dikirim ke shell ketika menekan tombol itu, jika Anda pertama kali menekan controlV:
Ini
^[
adalah ASCII escape character ( control[
). Anda memerlukan karakter controlV lnext untuk mencegah shell menafsirkannya atau membuangnya.Pengaturan
lnext
(literal berikutnya) adalah fitur termios apa pun yang mungkin Anda temui, tetapi anehnya tidak disebutkan dalam standar POSIX kecuali sebagai disediakan untuk ekstensi (lihat penyebutanVLNEXT
). Namun, karena ini ditandai untuk linux, dokumentasi Linux adalah apa yang dapat Anda gunakan untuk referensi:Anda dapat melihatnya di output
stty -a
, yaitu, di baris output keempat dalam contoh ini:sumber
Saya pikir Anda perlu mengambil langkah mundur dan berpikir tentang apa yang Anda coba lakukan. Anda tidak jelas tentang bagaimana Anda terhubung ke server melalui WebSockets. Saya berasumsi Anda terhubung ke server WebSocket yang memproxy koneksi ke port telnet, apakah itu benar (karena WebSockets hanya dapat terhubung ke WebSockets)? Anda mungkin ingin melihat proyek Websockify yang memiliki contoh klien telnet yang kompatibel dengan VT100. Anda bisa mendasarkan proyek Anda dari itu.
sumber