未找到 /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

相关内容