シェルスクリプトのnetcatが間違った接続を提供する

シェルスクリプトのnetcatが間違った接続を提供する

Web要求をポート1111でnetcatリッスンするシェルスクリプトがあります。たとえば、アクセスしようとするたびに次のようになります。localhostlocalhost: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
$

おすすめ記事