/ dev / tcp không tìm thấy


21

Khi tôi cố chạy lệnh sau:

echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80

Tôi nhận được thông báo lỗi sau:

bash: /dev/tcp/74.125.225.19/80: No such file or directory

Lệnh sau hoạt động hoàn hảo, vì vậy vấn đề liên quan đến cách tôi đang sử dụng /dev/tcp:

echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80

Tôi đang dùng Ubuntu 13.04, vì vậy khả năng sẽ có trên hệ thống của tôi. Tôi đang làm gì sai? Các quy tắc để sử dụng /dev/tcpđúng là gì?


Câu trả lời:


34

Bạn phải sử dụng nó trong chuyển hướng :

Bash xử lý một số tên tệp đặc biệt khi chúng được sử dụng trong các chuyển hướng, như được mô tả trong bảng sau:

...

/ dev / tcp / máy chủ / cổng

Nếu máy chủ là tên máy chủ hoặc địa chỉ Internet hợp lệ và cổng là số cổng số nguyên hoặc tên dịch vụ, Bash sẽ cố gắng mở ổ cắm TCP tương ứng.

Vì thế:

printf "GET / HTTP/1.1\n\n" > /dev/tcp/74.125.225.19/80

là cách đúng để sử dụng nó

Khi bạn sử dụng /dev/tcp/74.125.225.19/80trong một đường ống, bashđã cố chạy một lệnh có tên /dev/tcp/74.125.225.19/80và báo lỗi vì tệp đó không tồn tại.


Khả năng xử lý /dev/tcp/host/port/dev/udp/host/portchuyển hướng đã được thêm vào bashtrong phiên bản 2.04.

Bạn cần biên dịch bashvới --enable-net-redirectionstùy chọn.


Tôi thấy, vì vậy /dev/tcpđược coi là một "tập tin" chứ không phải là một tập lệnh.
IQAndreas 7/12/2015
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.