PuTTY แทรกอักขระแบบสุ่มระหว่างเซสชัน


26

ฉันเพิ่งเริ่มเช่าพื้นที่บนเซิร์ฟเวอร์ระยะไกลเพื่อให้ฉันสามารถทำงานในโครงการ ฉันพบว่าวิธีที่ไม่เจ็บปวดในการเข้าถึงบนเครื่อง windows คือผ่าน PuTTY อย่างไรก็ตามมีสิ่งหนึ่งที่ทำให้ฉันหงุดหงิดอยู่เสมอเมื่อใช้มันเพราะบางครั้งเคอร์เซอร์จะไม่มีตัวอักษรแบบสุ่มแทรกอยู่

เวลาส่วนใหญ่เป็นเพียงตัวหนอนตัวเดียว แต่ไม่ค่อยแยกออกว่าสิ่งที่ดูเหมือนหนีลำดับ ([[^ 8 หรือเหมือนกัน) มันจะเกิดขึ้นเมื่อฉันมุ่งเน้นไปที่หน้าต่างไม่ว่าฉันจะพิมพ์หรือห่าง 20 ฟุตจากแป้นพิมพ์ หากปล่อยทิ้งไว้นานพอมันจะพ่นตัวหนอนออกเป็นช่วง ๆ (โดยเฉลี่ยประมาณ 1 นาที)

ในที่สุดพฤติกรรมนี้ดูเหมือนจะไม่สอดคล้องกันเมื่อรันโปรแกรมเช่น nano หรืออินเตอร์เฟส mysql: ใน nano แทนที่จะแทรกเครื่องหมายตัวหนอนจะตั้งเครื่องหมาย (ctrl- ^); ใน mysql บรรทัดจะไม่สามารถแก้ไขได้

คำถามของฉันคือสิ่งนี้: มีใครเคยประสบพฤติกรรมเช่นนี้ใน PuTTY บ้างไหม และถ้าเป็นเช่นนั้นสิ่งที่สามารถทำได้เพื่อป้องกัน / แก้ไขพฤติกรรมนี้?


คอมพิวเตอร์ของคุณทำเช่นนี้หรือไม่หากคุณปล่อยให้เปิดโปรแกรมแบบสุ่มบนโฮสต์ของคุณสองสามชั่วโมงเช่น notepad หรือไม่
cutrightjm

@ekaj ไม่เฉพาะ PuTTY และโปรแกรมที่ใช้ PuTTY อย่างเช่น MobaXterm (ฉันดาวน์โหลดรุ่นพกพาเพื่อทดสอบ) แก้ไข: เฉพาะช่วงเซสชั่น SSH ใน Moba
Zachary Polikarpus

อืมมม คุณแน่ใจหรือว่ามันไม่ใกล้เคียงกับระยะเวลาเช่น 55-65 วินาทีเสมอในขณะที่ผงสำหรับอุดรูไม่ได้ใช้งานโดยสิ้นเชิง? ถ้าเป็นเช่นนั้นมันอาจเป็นกิจกรรม "Keep-alive" ไม่ว่าจะจากปลายเซิร์ฟเวอร์หรืออาจเป็นสีโป๊ว ลองดูสิ่งต่าง ๆ ที่พบภายใต้การค้นหา "มีชีวิต" ด้วยความช่วยเหลือแบบฉาบ เหล่านี้อาจจะเป็นประโยชน์: superuser.com/questions/94436/... unix.stackexchange.com/questions/6105/...
mgkrebbs

@ mgkrebbs บางครั้งดูเหมือนว่าเป็นระยะ แต่บางครั้งมันก็ไม่เกิดขึ้นประมาณ 5 ถึง 6 นาทีจากนั้นกลับไปดูเป็นระยะ เกี่ยวกับแนวความคิดที่รักษาถ้าเป็นเช่นนั้นมันก็ดูเหมือนจะถูกแยกออกไปด้านลูกค้าเพราะถ้าฉันเริ่มเซสชัน ssh จากเครื่องลินุกซ์ในเทอร์มินัลท้องถิ่น ฉันเห็นลิงก์แรกเมื่อฉันถามคำถามและลองเปลี่ยนประเภทเทอร์มินัลเป็น "linux" แต่ดูเหมือนจะไม่สร้างความแตกต่างที่น่าสังเกต
Zachary Polikarpus

ฉันประสบปัญหานี้เช่นกัน มันปรากฏขึ้นเมื่อฉันใช้ Putty, Kitty และแม้กระทั่ง MobaXterm
Attilah

คำตอบ:


30

ฉันมีปัญหาเดียวกันกับ PuTTY และพบว่ามีสาเหตุมาจากแอปพลิเคชันที่ฉันเรียกว่า "คาเฟอีน" ซึ่งกดปุ่ม F13 อย่างมีประสิทธิภาพทุกนาทีเพื่อหยุดการรักษาหน้าจอจากการเปิดใช้งาน (นโยบายกลุ่มป้องกันไม่ให้ฉันเปลี่ยนการหมดเวลาโปรแกรมรักษาหน้าจอ เครื่องของฉัน) การปิดใช้งานแอปพลิเคชันแก้ไขปัญหาของฉันได้


2
ฉันติดตั้งคาเฟอีนในเวลานั้น! มันสมเหตุสมผลแล้ว ... ขอบคุณ Bruce!
Zachary Polikarpus

3
Doh ฉันควรสงสัยว่า คาเฟอีนที่ฆ่าได้ทำเคล็ดลับ PS: ดูวิธีแก้ปัญหาของฉันด้านล่างเพื่อให้คาเฟอีนและผงสำหรับอุดรูทำงานร่วมกัน
shreyansp

ฉันมีแอปป้ายที่ทำเช่นเดียวกัน บางส่วน [28 ~ ปรากฏบน Terminal
ใจอยากรู้อยากเห็น

12

หากคุณต้องการให้ Putty และ Caffeine ทำงานอยู่ให้ทำตามขั้นตอนเหล่านี้:

  1. หยุดคาเฟอีน
  2. ตรวจสอบ Caffeine readme.txt เพื่อดูว่ามีการจำลองคีย์เริ่มต้น - ของฉันหรือไม่ F15
  3. ลงชื่อเข้าใช้เทอร์มินัลระยะไกลของคุณผ่าน Putty
  4. เริ่ม Caffeine (เคล็ดลับ: เริ่ม Caffeine ด้วยช่วงเวลาสั้น ๆ เช่น 3 วินาที)
  5. นำเซสชัน Putty ที่อยู่ในโฟกัส
  6. บนพรอมต์คำสั่ง bash ของคุณกดCtrl+V(จำเป็นต้องใช้เพื่อรับรหัสพิเศษสำหรับคีย์เช่นลองCtrl+Vตามด้วยF12)
  7. รอคาเฟอีนเพื่อจำลองคีย์
  8. รหัสคีย์จะปรากฏบนบรรทัดคำสั่ง (เช่นF15คือ^[[28~ตำแหน่งที่^[หลบหนี) หยุดคาเฟอีน
  9. ตอนนี้คุณสามารถผูกปุ่มนี้เป็นช่องว่างเพื่อที่เมื่อคาเฟอีนเลียนแบบมันจะไม่พิมพ์ ~
    • แก้ไข~/.inputrc(สร้างไฟล์ใหม่หากไม่มี)
    • เพิ่มบรรทัด "\e[28~":""
  10. เริ่มคาเฟอีน
  11. รีสตาร์ทเซสชันเทอร์มินัลของคุณ
    • ไม่ควรมีการสุ่มอีก~เมื่อใช้ Terminal Putty กับเซิร์ฟเวอร์ linux นั้น

+1 ฉันได้ขยายคำตอบนี้ไว้ด้านล่าง (พร้อมคำอธิบายว่าทำไมคำตอบนี้จึงไม่ใช่คำตอบที่ดีที่สุดสำหรับฉัน) :)
Petru Zaharia

7

ฉันพบวิธีแก้ปัญหาของshreyanspว่าเป็นวิธีที่น่าพอใจที่สุด (แต่ไม่มาก) :)
นี่คือความพยายามของฉันในการปรับปรุง (แน่นอน YMMV) หวังว่านี่อาจเป็นประโยชน์สำหรับผู้ที่กำลังมองหาวิธีแก้ปัญหา :)

โซลูชันของฉันมีพฤติกรรมดังนี้:

  • caffeine ส่งรหัสเสมือนที่เหมาะสมให้กับ Windows ซึ่ง:
    • ป้องกันไม่ให้ Windows เข้าสู่โหมดสลีปหรือไม่ทำงาน
    • ไม่สร้างผลข้างเคียงใด ๆ กับ Windows ไม่อย่างเดียวหรือใช้ร่วมกัน (ไม่มี Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10 เป็นต้น)
    • อย่างใดอย่างหนึ่งไม่ได้ถูกส่งไปยังสีโป๊วหรือถูกปฏิเสธโดยสีโป๊ว

TL; DR: โซลูชันของฉันถูกนำไปใช้ระหว่างขั้นตอนที่ 2 และ 3 (ดูด้านล่าง) ด้วย-key:0Eคาเฟอีนพารามม์:
ออกจากคาเฟอีนและเปิดใช้อีกครั้งด้วย:
caffeine.exe 5 -key:0E(สำหรับการทดสอบง่าย)
caffeine.exe 50 -key:0E(สำหรับการทดสอบหน้าจอบังคับ) 1 นาที

  • เรียกใช้งานreadโปรแกรมบนโฮสต์ระยะไกลและดูว่าจะไม่รับการกดแป้นทุก 5 หรือ 50 วินาที
  • ออกreadด้วยCtrl+C

Shreyanspเสนอวิธีแก้ปัญหาที่จะใช้การแก้ไขระหว่างขั้นตอนที่ 5 และ 10 (ดูด้านล่าง)
ผลข้างเคียงของสิ่งนั้น (ในการกำหนดค่าของฉัน) คือการกดแป้นแต่ละครั้งที่สีโป๊วส่งต่อจากคาเฟอีนไปยังโฮสต์ระยะไกล:

  • มันเรียก 'รีเซ็ตแถบเลื่อนบนปุ่มกด' (การตั้งค่าในหน้า Putty / Window)
    ซึ่งปกติฉันต้องการ แต่เมื่อฉัน (มนุษย์) กำลังกดปุ่ม แต่ไม่ได้คาเฟอีนเป็นประจำ :)
  • รุ่นแปล readline / bash ของมัน (จาก'"\e[28~"'ถึง'""'(ว่างเปล่าคีย์) ทำให้การโต้ตอบเซสชันระยะไกลหยุดทำงานเป็นเวลาหลายวินาที

ในการทดสอบข้างต้นได้อย่างง่ายดายออกจาก Caffeine แล้วเปิดใหม่ด้วยช่วงเวลา 5 วินาทีและรหัสคีย์เสมือน 07:
caffeine.exe 5 -key:07

  • เรียกใช้งานreadโปรแกรมบนโฮสต์ระยะไกลและดูว่าการกดแป้นได้รับทุกๆ 5 หรือ 50 วินาที
  • ออกreadด้วยCtrl+C

การกดแป้น 'ไปป์ไลน์' ตามที่ฉันเข้าใจ:

  1. คาเฟอีนส่งรหัสเสมือนคีย์ไปยัง Windows
  2. Windows ส่งรหัสเสมือนคีย์นั้นให้แก่ Putty
  3. Putty ทำ 'แปล' / 'การแมป' บางอย่างตามการตั้งค่าเซสชันใน:
    • เทอร์มิ / *
    • หน้าต่าง/*
  4. Putty ส่งรหัสคีย์ 'แปล' / 'แมป' ไปยังโฮสต์ระยะไกล
  5. ในพื้นที่ห่างไกล, โปรแกรม 'มินัล' (เช่น: $TERM=xterm, vt100, vt102, vt220ฯลฯ ) แปลจาก 'สายโปรโตคอล' ลงรหัสกุญแจ
  6. ไลบรารี readline ทำการแปล / การแมปบางอย่างตาม ~/.inputrc
  7. readline ส่งรหัสคีย์เพื่อทุบตี
  8. bash ทำการแปล / การแมปบางอย่างตาม~/.bashrc(ขึ้นอยู่กับคำสั่ง builtin bind)
  9. bash หรือ readline (ไม่แน่ใจว่าอันไหน) ส่งรหัสคีย์ที่แปลแล้วไปที่ nano (โปรแกรมแก้ไขข้อความของฉัน)
  10. ขั้นตอนนี้สามารถทำงานได้นานขึ้นโดยการเพิ่มscreenโปรแกรม (ซึ่งรวมถึง$TERM=screenขั้นตอนที่ 5 และวนซ้ำอีกครั้งในขั้นตอนที่ 6 ถึง 10)

หมายเหตุ:เมื่อถึงขั้นตอนที่ 4 จะเป็นการยากมากที่จะควบคุมเลเยอร์ 'translation' / 'mappings' ที่แตกต่างกันอย่างแม่นยำ ฉันขอแนะนำให้หลีกเลี่ยงถ้าคุณทำได้


พื้นหลัง:
ฉันใช้caffeine.exe -key:07เวลาหลายปีก่อนที่จะจัดการกับ pfsense 2.3.3-RELEASE-p1 (ขึ้นอยู่กับ FreeBSD 10.3-RELEASE)
จากนั้นcaffeine.exe -key:07ได้รับอีกด้านหนึ่งว่า^[[28~... ซึ่งดูเหมือนว่าจะถูกจับคู่กับCtrl+^(Set Mark) ในนาโน
นี่เป็นเรื่องที่ค่อนข้างน่ารำคาญ (ลองจินตนาการว่ามีคนกดและเก็บ Shift Key ไว้ในขณะที่คุณเลื่อนตัวอักษรไปรอบ ๆ ใน Notepad)

ก่อนหน้านี้ผมไม่ได้ปรับแต่งจำนวนมากในการตั้งค่าสีโป๊ว, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcที่จะได้รับสิ่งที่ฉันพิจารณาการทำงานขั้นพื้นฐาน ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, Numpad 0-9, Numpad ./*-+) ทำงานอย่างต่อเนื่องระหว่างทุบตี nano / / จอ

เมื่อฉันค้นพบcaffeine.exe -key:07'ข้อผิดพลาด' นี้ฉันไม่ต้องการหวนกลับมาอีกครั้ง :)


ทดสอบกับ:
Windows 8.1 Enterprise 64- บิต (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (ขึ้นอยู่กับFreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04 00


อ้างอิง:


1

สิ่งนี้มีลักษณะคล้ายกับ escape sequence หรือตัวควบคุมซึ่งอาจอธิบายได้ว่าทำไมคุณไม่เห็นในโปรแกรมอื่นเช่น notepad

ฉันไม่แน่ใจว่าต้องกดคีย์ใดเพื่อให้ได้ผลลัพธ์นี้ แต่ฉันจะเล่นรอบ ๆ และลองค้นหา คุณสามารถตั้งชื่อลำดับอื่นที่แสดงได้ไหม พฤติกรรมของ mysql และ nano อาจเป็นเพียงการตีความลำดับหลบหนีที่ดูเหมือนจะเข้ามาอีกครั้ง

ในที่สุดคำถามคือสิ่งที่ทำให้ปัจจัยสำคัญเหล่านี้ คุณใช้แล็ปท็อปที่ควบคุมการแบ็คไลท์โดยอัตโนมัติโดยใช้ซอฟต์แวร์ลิขสิทธิ์หรือไม่? ฉันเคยเห็นซอฟต์แวร์ที่ติดตั้งมาแปลก ๆ เลียนแบบการกดคีย์แทนการใช้ API คุณอาจต้องการใช้สิ่งที่ชอบใส่ตัวคุณเอง


ฉันได้เปลี่ยนระบบปฏิบัติการตั้งแต่แรกฉันเปลี่ยน dual Win-8.1 และ Ubuntu เป็น Ubuntu เท่านั้นจากนั้นเปลี่ยนเป็น Mint และสุดท้ายคือ Arch ฉันไม่เคยประสบปัญหาคล้าย ๆ กันซึ่งทำให้ฉันเชื่อว่าปัญหานั้นเกิดจากลักษณะที่ Windows โต้ตอบกับ PuTTY สำหรับสาเหตุของปัจจัยการผลิตที่สำคัญฉันจะไม่แปลกใจถ้าสิ่งที่คุณแนะนำเป็นกรณี แต่ฉันไม่ได้ใช้หรือสังเกตเห็นการควบคุมฮาร์ดแวร์อัตโนมัติใด ๆ หากฉันยังมีบันทึกเหล่านั้นอยู่ฉันจะโพสต์ไว้ แก้ไข: หากใครประสบปัญหานี้ฉันแนะนำให้คุณโพสต์ข้อมูลนี้
Zachary Polikarpus

ดูคำตอบของ Gilles ในWhy Putty ที่แทรกเข้าไปในเปลือกหอยของ Fedoraซึ่งอธิบายได้อย่างชัดเจนว่าทำไมคนเราถึงมองเห็น~(และได้ยินเสียงคน) เมื่อสิ่งที่\e[3~ถูกส่งออกไป
Arjan

(เช่นกันคุณอาจต้องการที่จะเชื่อมโยงไปยังโพสต์ที่เป็นที่แรกที่ผมคิดได้เห็นเพียงครั้งเดียว~จะไม่ได้บ่งบอกถึงลำดับหนี.)
Arjan

1

ฉันใช้ตัวเลือก -key: 07 บน commandline เพื่อเปิด caffiene .. ดูเหมือนว่าจะหยุดปัญหาสีโป๊ว

เพียงแค่ใส่สิ่งนี้ในไฟล์ค้างคาว

caffeine.exe -key: 07


ฉันใช้ 'caffiene.exe -key: 07' เช่นกันที่ให้บริการฉันดีมาหลายปี อย่างไรก็ตามเนื่องจากเชื่อมต่อกับ pfSense ของฉัน (ใช้ FreeBSD) สิ่งนี้จะได้รับในอีกด้านหนึ่งเป็น ^ [[28 ~ ... ซึ่งดูเหมือนว่าจะถูกแมปกับ Ctrl + ^ (Set Mark) ในนาโน นี่เป็นเรื่องที่ค่อนข้างน่ารำคาญ (ลองนึกภาพใครบางคนที่กำลังกดปุ่ม Shift ค้างไว้ในขณะที่คุณเลื่อนตัวอักษรไปรอบ ๆ ใน Notepad) :) ฉันจะหากุญแจอีกดอกทางด้านคาเฟอีนหรือทำแผนที่ที่กำหนดเองบนฝั่ง FreeBSD (ดู defs @ msdn.microsoft.com/en-us/library/windows/desktop/ ...... )
Petru Zaharia

เปลี่ยนเป็นcaffeine.exe -key:0E(ดูคำตอบของฉันด้านล่าง) ดูเหมือนว่าจะทำงานได้ดีกับ Windows (8.1 64 บิต) และ Putty ก็ไม่สนใจอย่างมีความสุข :)
Petru Zaharia

0

มีคนในฟอรัมของ Cisco แนะนำให้เปลี่ยนพารามิเตอร์ความเร็วคอนโซลเพื่อแก้ไขปัญหานี้

http://www.dslreports.com/forum/r27090677-HELP-Cisco-1800-garbled-output-in-putty

คุณได้ลองใช้ความเร็วคอนโซลทั้งหมดใน Putty ตามที่ระบุใน1หรือไม่?

หมายเหตุ: หากอัตรา baud ถูกตั้งค่าแตกต่างจากอัตราเริ่มต้นจะเห็นอักขระแปลก ๆ บน CLI ตรวจสอบtable1เพื่อตั้งอัตรา baud สำหรับค่า Confreg ต่างๆ


1
ความเร็วคอนโซลใช้สำหรับการเชื่อมต่อแบบอนุกรม เขาหมายถึงการเชื่อมต่อ SSH ในขณะที่ SSH มีการตั้งค่า "ความเร็วของเทอร์มินัล" ... ฉันไม่เคยเห็นสิ่งนี้ทำให้เกิดปัญหา
Jared

0

ฉันยังมีปัญหาเดียวกันและพบว่า caffeine.exe เป็นปัญหาแน่นอน ตอนแรกฉันคิดว่ามันอาจไม่ได้เกิดจาก caffeine.exe เพราะฉันใช้สิ่งนี้มานานกว่า 2 ปีกับแล็ปท็อปเครื่องเก่าของฉัน ฉันลองเปลี่ยน caffeine.exe -useshift แทน แต่มันส่ง ^ C พบโปรแกรมอื่น Mouse Jiggler ที่ช่วยรักษาหน้าจอให้ห่างออกไป แต่ไม่ส่งลำดับ Escape ใด ๆ ในเซสชัน Putty ของฉันอีกต่อไป


0

ทางออกที่ดีกว่าคือการกำหนดค่าการตั้งค่าในเซสชันสีโป๊วของคุณเพื่อให้ Caffine ไม่ยุ่งกับมัน

ใน Putty ใต้ Terminal Keyboard เลือกตัวเลือก SCO ใน Putty ภายใต้ Terminal Bell เปลี่ยนการกระทำเป็นไม่มี (เพื่อปิดเสียงระฆัง)

Caffine จะยังคงทำสิ่งนั้นอยู่และไม่รบกวนเซสชันของคุณ (ฉันไม่ได้ใช้ปุ่ม Fn ในระหว่างการใช้งานดังนั้นฉันไม่รู้ว่าจะเกิดอะไรขึ้นหากคุณต้องการใช้ปุ่ม Fn)


0

2017-09-20: แก้ไขการฉีดถ่านโดยเริ่มต้นคาเฟอีนด้วย« caffeine.exe -useshift -noicon »ในตัวกำหนดตารางงานที่เรียกเมื่อเข้าสู่ระบบ ไม่มีไอคอนไม่มีตัวอักษรที่ถูกฉีดอีกในเซสชั่น mintty / bash ของฉัน มันช่างน่ารำคาญเหลือเกิน ขอบคุณทุกคนสำหรับคำแนะนำของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.