shell 脚本中的 netcat 给出无效连接

shell 脚本中的 netcat 给出无效连接

我有一个 shell 脚本,用于netcat侦听localhost端口 1111 上的 Web 请求。localhost:1111/index.html例如,每次我尝试访问时,我都会得到:

invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

每次我访问时,末尾的数字(60038)似乎都在增加localhost

关于出了什么问题有什么建议吗?目录是什么default localhost?我应该把它放在哪里index.html才能localhost:1111/index.html起作用?

编辑

这是完整的脚本:

#!/bin/sh
while true
do
netcat -vvl localhost -p 1111 -c '
    set -x
    read http_request
    echo HTTP/1.0 200 OK
    echo
    echo "Received HTTP request: $http_request"
'   
done

答案1

您的原始脚本要求连接来自名为 的主机localhost,但由于某种原因过滤失败。不寻常,因为它与错误中列出的名称完全匹配:invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

此命令将侦听localhost网络接口(并将忽略来自其他接口的请求,例如 LAN):

netcat -vvl -s localhost -p 1111 -c '
    set -x
    read http_request
    echo HTTP/1.0 200 OK
    echo
    echo "Received HTTP request: $http_request"
'

如果你想监听所有接口上的请求,你可以-s完全删除这一部分:

netcat -vvl -p 1111 -c '...'

在我的系统上,如果我想在不使用 的情况下进行相同类型的源主机过滤-s,我需要使用127.0.0.1localhost.localdomain

netcat -vvl localhost.localdomain -p 1111 -c '...'

netcat -vvl 127.0.0.1 -p 1111 -c '...'

无论如何,上述选项之一应该适合您:

$ netcat -vvl 127.0.0.1 -p 1111 -c '
quote>     set -x
quote>     read http_request
quote>     echo HTTP/1.0 200 OK
quote>     echo
quote>     echo "Received HTTP request: $http_request"
quote> '
listening on [any] 1111 ...
connect to [127.0.0.1] from localhost.localdomain [127.0.0.1] 35368
+ read http_request
+ echo HTTP/1.0 200 OK
+ echo
+ echo Received HTTP request: GET / HTTP/1.1
$

相关内容