linux - 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>'
解决方案
您的脚本运行并输出到管道。然后开始收听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
推荐阅读
- sockets - 使用 GNAT.Sockets 接收多播流量
- anaconda - Error while conda environment creation got stuck
- sql - How can I select only the rows from a table with ids that don't exist in an inner join in PostgreSQL?
- javascript - 在 append() 中将 Javascript 变量传递给 HTML 代码
- c++ - Destiny Number Calculator
- c - 为什么指针在 C 中如此重要?
- amazon-web-services - Greengrass_HelloWorld lambda doesn't publish to Amazon IoT console
- javascript - 如何将一串带有逗号的数字转换为整数并将它们相加?
- date - boto 3 - 丢失日期格式
- laravel - laravel 组合两个 csv 而不覆盖每个中的相似数据