/dev/tcp/hostname/80:作为交互式会话?

/dev/tcp/hostname/80:作为交互式会话?

有人知道如何获得与该设备的交互式会话吗/dev/tcp/hostname/80

我打开cat <> /dev/tcp/www.google.com/80并尝试输入“GET / HTTP/1.0\nHost: www.google.com\n”,但是没有反应。

以下操作有效,但会话是非交互式的:

{ echo -e "GET / HTTP/1.0\r\nHost: www.google.com\r\n\r" >&3; cat <&3 ; } 3<> /dev/tcp/www.google.com/80

答案1

Sole<>相当于0<>。执行 时cat <> /dev/tcp/…, 的 stdincat被重定向。cat不会从终端读取。您输入的内容不会传到任何地方。

据称有效的命令

{ echo -e "GET / HTTP/1.0\r\nHost: www.google.com\r\n\r" >&3; cat <&3 ; } 3<> /dev/tcp/www.google.com/80

将 的输出发送echo到连接,并将响应发送到cat。同样,没有任何东西可以读取您(将要)输入的内容。

重要的是cat它是单向的。要进行交互式通信,cat每个方向都需要一个:

{ cat <&3 &
  cat >&3
} 3<> /dev/tcp/www.google.com/80

第一个cat(在后台)从连接读取并写入终端(屏幕)。第二个cat从终端读取(您输入的内容)并打印到连接。

当连接终止时,cat后台会自动退出;无需明确终止它。

nc只需调用一次即可完成以下任务:

nc www.google.com 80

默认情况下,nc从 stdin 读取的内容会发送到连接,响应会发送到 stdout。

相关内容