2011-01-19 34 views
58

Có cách nào để nhanh chóng liên kết với địa chỉ cổng TCP/ip và chỉ cần in ra tất cả thông tin tới STDOUT? Tôi có một giải pháp gỡ lỗi đơn giản để viết mọi thứ lên 127.0.0.1:4444 và tôi muốn có thể đơn giản ràng buộc một cổng từ bash và in mọi thứ đi qua. Có cách nào làm dễ hơn không?Máy chủ Socket đơn giản trong Bash?

+0

liên quan http://unix.stackexchange.com/questions/49936/dev-tcp-listen-thay-of-nc-listen –

Trả lời

87
$ nc -k -l 4444 > filename.out 

thấy nc(1)

+3

Bất kỳ cách nào để làm điều đó không yêu cầu nó chạy trong một vòng lặp, tức là ràng buộc cho đến khi bị giết? Tôi liên tục kết nối và ngắt kết nối với socket và 'nc' chết nếu tôi không chạy nó như sau:' while true; do nc -l 4444; done'. –

+2

Thêm tùy chọn '-k'. –

+0

Trên một số bản phân phối, bạn cần thay đổi nó thành 'nc -k -l -p 4444'. –

37

Chỉ vì bạn hỏi làm thế nào để làm điều đó trong bash, mặc dù netcat Câu trả lời là rất có giá trị:

$ exec 3<>/dev/tcp/127.0.0.1/4444 
    $ cat <&3 
+11

Nhưng điều đó không hiệu quả khi nghe. Tôi không nghĩ rằng nó có thể lắng nghe bằng cách sử dụng đúng bash – Vijayender

+6

Giải pháp này thực sự đòi hỏi một máy chủ lắng nghe. Bash không thể làm điều này bằng phương tiện '/ dev/tcp' như được giải thích trong http://unix.stackexchange.com/a/49947/13746 – xebeche

+1

Nghe? Đó là điều xinetd dành cho! : D – Evi1M4chine

8

Đó là làm việc như bạn mong đợi:

nc -k -l 4444 |bash 

và sau đó bạn

echo "ls" >/dev/tcp/127.0.0.1/4444 

thì bạn sẽ thấy danh sách được thực hiện bởi bash.

[A Cảnh báo an ninh Giới thiệu tóm tắt]
Tất nhiên nếu bạn để lại một điều như thế này chạy trên máy tính của bạn, bạn có một cửa ngõ rộng mở cho tất cả các loại tấn công vì các lệnh có thể được gửi từ bất kỳ tài khoản người dùng trên bất kỳ lưu trữ trong mạng của bạn. Điều này thực hiện không có bảo mật (xác thực, nhận dạng) bất cứ điều gì và gửi tất cả các lệnh truyền không được mã hóa qua mạng, vì vậy nó rất dễ bị lạm dụng.

1

Thêm một câu trả lời bằng ncat rằng @Freedom_Ben ám chỉ:

ncat -k -l 127.0.0.1 4444 

và giải thích về lựa chọn từ người đàn ông ncat:

-k, --keep-open   Accept multiple connections in listen mode 
-l, --listen    Bind and listen for incoming connections 
+0

'ncat' đi kèm với' nmap' và hỗ trợ các kết nối đồng thời, trong khi lệnh 'nc' kế thừa thì không. –

Các vấn đề liên quan