ฉันจะบังคับให้ 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ตามที่ระบุไว้ในคำตอบ