我使用以下命令从 TCP 套接字发送和接收:
exec 3<>/dev/tcp/localhost/port
echo -e "textcommand\r" >&3
cat <&3
exec 3<&-;exec 3>&-
cat <&3 行在终端中显示来自本地主机的响应,但我必须使用 Ctrl+d 或 Ctrl+c 返回命令行。如何在没有任何键盘交互的情况下打印来自本地主机的响应并返回到命令行?
编辑
(echo -en "textcommand\r"; sleep 1) | telnet localhost port
以上作为替代方案。在这里找到这个:https://stackoverflow.com/a/24204924/5900282
编辑2
这里有一个类似的问题:通过 Bash /dev/tcp 文件描述符从 Fluke 1620a 捕获数据
答案1
使用timeout
:
exec 3<>/dev/tcp/localhost/port
echo -e "textcommand\r" >&3
timeout 0.2 cat <&3
exec 3<&-; exec 3>&-