Làm cách nào tôi có thể buộc netcat gửi đầu vào của mình ngay lập tức, không chỉ trên dòng mới?


35

Làm cách nào tôi có thể buộc netcat gửi đầu vào của mình ngay lập tức, không chỉ trên dòng mới? Tôi muốn kiểm tra trình phân tích cú pháp HTTP theo cách thủ công và kiểm tra cách nó hoạt động khi các dòng tiêu đề được trải rộng trên nhiều gói.


2
thử socatnhư được liệt kê trong câu trả lời
Jeremy W

Câu trả lời:


42

Sử dụng phím "eof" , CtrlD. Khi được nhấn ở giữa một dòng, nó sẽ cung cấp cho netcat mọi thứ đã được nhập vào thời điểm đó.

Bộ đệm thực sự được thực hiện bởi lớp tty và hoàn toàn không được xử lý nc. stty -icanon && nc ...sẽ vô hiệu hóa bộ đệm và cho phép ncxem dữ liệu khi được nhập vào thiết bị đầu cuối, tại thời điểm đó, nó sẽ được gửi ngay lập tức. (Lưu ý rằng các lệnh sttyncphải được chạy cùng nhau, nếu không, chính vỏ có thể sẽ kích hoạt nó khi hiển thị dấu nhắc của nó.)


+1, nhưng không có tùy chọn nào để mở netcat theo cách mà nó không đệm gì cả?
lpapp

5
@FinalContest: Bộ đệm được thực hiện bởi lớp tty. stty -icanon && nc ...hoặc stty raw && nc ...sẽ vô hiệu hóa nó. [Lưu ý rằng nó phải được chạy cùng nhau, nếu không, chính vỏ sẽ có thể bật lại được khi hiển thị lời nhắc.]
grawity

@grawity: tuyệt vời, cái trước hoạt động tốt, nhưng cái sau bị kẹt ... ctrl-c không hoạt động nữa để thoát phiên và tôi cũng không thể để ctrl-z hoạt động được. Điều đó có được mong đợi không? Ngoài ra, vui lòng cập nhật câu trả lời của bạn để chúng tôi có thể xóa các bình luận.
lpapp

2
@FinalContest: Vâng, rawthay đổi một loạt các tùy chọn tty, một trong số đó là việc xử lý các phím "điều khiển" đặc biệt ở cấp độ tty. (Đây thực sự là một chế độ "thô", trong đó nó chuyển mọi thứ cho chương trình.) Bạn có thể sử dụng stty -a -F /dev/pts/XXtừ một tty khác để xem các tham số hiện tại.
grawity

Tôi đang sử dụng stty -icanon -echo && nc ...nếu không mọi char tôi nhập vào nc đều được lặp lại hai lần
Gelin Luo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.