当我尝试运行以下命令时:
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
我在Ubuntu13.04,所以功能应该在我的系统上。我做错了什么?正确使用/dev/tcp
的规则是什么?
发布于 2015-11-06 07:03:16
您必须在重定向中使用它:
Bash在重定向中使用时特别处理几个文件名,如下表所述:. /dev/ TCP / host /port如果主机是有效的主机名或Internet地址,而端口是整数端口号或服务名称,则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
的命令,并报告了一个错误,因为该文件不存在。
在重定向中处理/dev/tcp/host/port
和/dev/udp/host/port
的能力是在2.04版本中添加到bash
中的。
您需要使用bash
选项编译--enable-net-redirections
。
https://unix.stackexchange.com/questions/241174
复制相似问题