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