我有一个 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.1
或localhost.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
$