ฉันจะบังคับให้ netcat ส่งอินพุตทันทีโดยไม่ต้องขึ้นบรรทัดใหม่ได้อย่างไร ฉันต้องการทดสอบตัวแยกวิเคราะห์ HTTP ด้วยตนเองและตรวจสอบว่ามันทำงานอย่างไรเมื่อมีการกระจายบรรทัดส่วนหัวในหลายแพ็คเก็ต
ฉันจะบังคับให้ netcat ส่งอินพุตทันทีโดยไม่ต้องขึ้นบรรทัดใหม่ได้อย่างไร ฉันต้องการทดสอบตัวแยกวิเคราะห์ HTTP ด้วยตนเองและตรวจสอบว่ามันทำงานอย่างไรเมื่อมีการกระจายบรรทัดส่วนหัวในหลายแพ็คเก็ต
คำตอบ:
ใช้ "EOF" CtrlDที่สำคัญ เมื่อกดตรงกลางของบรรทัดมันจะมอบให้กับ netcat ทุกอย่างที่มีการป้อนข้อมูล ณ จุดนั้น
การบัฟเฟอร์จะกระทำโดยเลเยอร์ tty และไม่ได้จัดการโดยnc
ทั้งหมด stty -icanon && nc ...
จะปิดการใช้งานการบัฟเฟอร์และอนุญาตให้nc
ดูข้อมูลในขณะที่มันถูกป้อนเข้าสู่เทอร์มินัล ณ จุดนี้มันจะถูกส่งทันที (โปรดทราบว่าคำสั่งstty
และnc
จะต้องทำงานร่วมกันมิฉะนั้นตัวเชลล์เองอาจเปิดใช้งานได้อีกครั้งเมื่อแสดงพรอมต์)
stty -icanon && nc ...
หรือstty raw && nc ...
จะปิดการใช้งาน [โปรดทราบว่าจะต้องทำงานร่วมกันมิฉะนั้นตัวเชลล์เองจะเปิดใช้งานอีกครั้งเมื่อแสดงพรอมต์]
raw
เปลี่ยนกลุ่มของตัวเลือก tty ทั้งหมดหนึ่งในนั้นคือการจัดการของปุ่ม "ควบคุม" พิเศษที่ระดับ tty (มันเป็นโหมด "ดิบ" จริงๆแล้วมันผ่านทุกอย่างไปยังโปรแกรม) คุณสามารถใช้stty -a -F /dev/pts/XX
จาก tty อื่นเพื่อดูพารามิเตอร์ปัจจุบัน
stty -icanon -echo && nc ...
อักขระอย่างอื่นทุกตัวที่ฉันพิมพ์เป็น nc จะได้รับเสียงสะท้อนสองครั้ง
socat
ตามที่ระบุไว้ในคำตอบ