【发布时间】:2015-12-31 21:10:29
【问题描述】:
我使用socat 进行快速 telnet 横幅抓取,如下所示:
for ip in $list
do
socat -T 1 - tcp:$ip:23 &
done
它遍历指定的 IP 地址列表,并为每个 IP 地址调用 socat,它将端口 23 上的 TCP socket 与 stdin (-) 链接起来,并在一秒钟后断开连接,同时在后台运行。问题是所有后台进程都使用相同的stdin,所以它们都会挂起。我尝试了readline 选项,以及用</dev/null 抑制stdin,但没有结果。例如,netcat 的行为方式相同,除非指定 -d 忽略输入。
我指定的socat 行是用于其他目的的脚本的一部分,所以如果问题可以在不诉诸masscan、nmap 或netcat 的情况下解决就好了.谢谢。
【问题讨论】:
-
我真的不知道您要达到什么目的,但是如果您将
-替换为不执行任何操作的进程替换会有所帮助吗?这个:socat -T 1 <(:) tcp:$ip:23 &. -
你指定了
< /dev/null之前&,对吧? -
socat必须允许在一秒后超时。如果从管道的一端或另一端提供echo -n |或</dev/null,它什么也不发送并立即退出会话,有时甚至在横幅显示之前。当提供<(:)时,socat抱怨 /dev/fd/.. 是一个只读文件系统。
标签: linux bash stdin telnet socat