我试图在bash中设置一个简单的TCP服务器,它可以监听请求,处理收到的数据,然后向客户端发送响应。
有没有办法使用netcat正确地做到这一点?
编辑 - 我已尝试过的内容:
nc -kl 4444 | bash pipe.sh
答案 0 :(得分:-1)
查看this example script,它使用bash输入/输出重定向来建立套接字连接,以便发送SMTP邮件。我相信你可以重新定位你正在做的事情的概念,其优势在于它是所有bash内置函数(它不需要netcat)。
核心逻辑是:
exec 3<>/dev/tcp/$MAILSERVER/$PORT
echo -en "HELO mail.email.com\r\n" >&3
echo -en "MAIL FROM:$MAILFROM\r\n" >&3
echo -en "RCPT TO:$MAILTO\r\n" >&3
echo -en "DATA\r\n" >&3
echo -en "Subject: $SUBJECT\r\n\r\n" >&3
echo -en "$DATA\r\n" >&3
echo -en ".\r\n" >&3
echo -en "QUIT\r\n" >&3
cat <&3
exec 3<>/dev/tcp/$MAILSERVER/$PORT
部分会创建>&3
和<&3
个重定向器;输出到>&3
的任何内容都会被发送到远程端口,cat <&3
会向控制台输入从远程服务器收到的所有数据作为响应。