shell脚本中的netcat提供无效连接


13

我有一个Shell脚本,用于在端口1111上netcat侦听localhostWeb请求。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

末尾的数字是源端口,它是随机选择的;这是浏览器用来打开传出请求的端口。不用担心 您可以发布netcat命令行吗?“无效的连接”消息来自netcat还是其他工具?
mrb

我刚刚添加了完整脚本。我不确定netcat是否给出消息,它是否可以设置。我不知道该怎么办!
MinaHany

该脚本是侦听的一面。您还可以发布客户端吗?
2012年

Answers:


6

您的原始脚本要求连接来自名为的主机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
$

非常感谢!将localhost更改为127.0.0.1似乎在firefox上达到了效果。我猜Chrome的处理方式有所不同。
MinaHany
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.