未找到 /dev/tcp

未找到 /dev/tcp

當我嘗試執行以下命令:

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

我收到以下錯誤訊息:

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

以下命令完美運行,因此問題涉及我如何使用/dev/tcp

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

我使用的是 Ubuntu 13.04,所以功能應該在我的系統上。我究竟做錯了什麼?正確使用有哪些規則/dev/tcp

答案1

你必須使用它重定向:

Bash 在重定向中使用多個檔案名稱時會特別處理這些檔案名,如下表所述:

/dev/tcp/主機/端口

如果 host 是有效的主機名稱或 Internet 位址,且 port 是整數連接埠號碼或服務名稱,Bash 會嘗試開啟對應的 TCP 套接字。

所以:

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

才是正確的使用方法。

當您/dev/tcp/74.125.225.19/80在管道中使用時,bash請嘗試執行名為的命令/dev/tcp/74.125.225.19/80並報告錯誤,因為該檔案不存在。


2.04 版本中新增了處理/dev/tcp/host/port和重定向的功能。/dev/udp/host/portbash

您需要使用選項bash進行編譯--enable-net-redirections

相關內容