首页 > 解决方案 > ncat web server如何获取请求参数和客户端ip

问题描述

我使用 ncat 作为用 bash 编写的简单网页的 Web 服务器。但是如何从当前请求中获取获取和发布请求参数以及客户端 IP?我尝试将标准输出和错误管道重定向到日志文件。但这是有问题的,因为我总是只从上一个请求中获取日志,而不是当前请求。

这是我的代码:终端命令:

while true; do bash indexlog.sh | ncat -lv 8000 &>>ncat.log;done
cat indexlog.sh:
#!/bin/bash
echo -e 'HTTP/1.1 200 OK\r\n'
echo -e '<!DOCTYPE html>'
echo -e '<html lang="en">'
echo -e '<head>'
echo -e '<meta charset="utf-8"/>'
echo -e '</head>'
echo -e '<body>'
echo -e '<pre>'
echo request time=$(date)
cat ncat.log
echo ''>ncat.log
echo -e '</pre>'
echo -e '</body>'

标签: linuxbashservernetcat

解决方案


您的脚本运行并输出到管道。然后开始收听ncat过程。尝试将侦听器作为单独的进程运行。首先启动监听器。

# listener process: (`-k` to keepalive)
ncat -lk 8000 >> ncat.log

然后在另一个终端例如:

# incoming requests
while true; do
   ./indexlog.sh | ncat localhost 8000
    sleep 5
done

编辑 还删除这些行,这可能有效但可能导致冲突,因为一个进程由于截断而必须重新搜索到日志的开头-:

cat ncat.log
echo ''>ncat.log

推荐阅读