我需要netcat来监听HTTP请求,并根据请求,我需要运行一个脚本。
到目前为止,我有这个;
netcat -lk 12345 | grep "Keep-Alive"
因此每次netcat收到包含“keep-alive”的包时,我都需要触发一个脚本。
它需要在crontab中运行......
感谢您的帮助!
答案 0 :(得分:8)
这个怎么样?
#!/bin/bash
netcat -lk -p 12345 | while read line
do
match=$(echo $line | grep -c 'Keep-Alive')
if [ $match -eq 1 ]; then
echo "Here run whatever you want..."
fi
done
将“echo”命令替换为您要执行的脚本。
答案 1 :(得分:2)
怎么样:
#!/bin/bash
netcat -lk -p 12345 | grep 'Keep-Alive' | while read unused; do
echo "Here run whatever you want..."
done
或者
#!/bin/bash
netcat -lk -p 12345 | sed -n '/Keep-Alive/s/.*/found/p' | xargs -n 1 -I {} do_something
# replace do_something by your command.
答案 2 :(得分:0)
根据客户端的情况,它可能坐在那里等待netcat /服务器响应。
我做了与上面类似的事情,但使用了
while true do
netcat -l 1234 < 404file.txt
404file.txt
有HTTP/1.1 404
个文件未找到的地方
这会断开与客户端的连接,并且由于 netcat 没有'k',因此它会终止并重新启动,因为while为true,所有这些都准备再次接收和发送404。