Netcat in Shell-Skript, das ungültige Verbindung gibt


13

Ich habe ein Shell-Skript, das verwendet wird netcat, um localhostauf Port 1111 nach Webanforderungen zu suchen. Jedes Mal, wenn ich versuche, auf etwas zuzugreifen, localhost:1111/index.htmlerhalte ich:

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

Die Zahl am Ende (60038) scheint mit jedem Zugriff zuzunehmen localhost.

Irgendwelche Vorschläge, was falsch läuft? Und was ist das default localhostVerzeichnis? Wo soll ich ein stellen, index.htmldamit das localhost:1111/index.htmlklappt?

BEARBEITEN

Hier ist das vollständige Skript:

#!/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

Die Zahl am Ende ist der Quellport, der zufällig ausgewählt wird. Dies ist der Port, über den Ihr Browser die ausgehende Anfrage öffnet. Mach dir keine Sorgen. Können Sie Ihre netcatKommandozeile posten ? Kommt die Meldung "Ungültige Verbindung" von netcateinem anderen Tool?
mrb

Ich habe gerade das vollständige Skript hinzugefügt. Ich bin mir nicht sicher, ob netcat die Nachricht weitergibt. Möglicherweise ist sie eingestellt. Ich bin mir nicht sicher, welches Set das überhaupt macht!
MinaHany

Dieses Skript ist die zuhörende Seite. Können Sie auch die Client-Seite posten?
jw013

Antworten:


6

Ihr ursprüngliches Skript erfordert, dass die Verbindung von einem Host mit dem Namen stammt localhost, die Filterung jedoch aus irgendeinem Grund fehlschlägt. Ungewöhnlich, da es genau mit dem im Fehler angegebenen Namen übereinstimmt:invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038

Dieser Befehl überwacht die localhostNetzwerkschnittstelle (und ignoriert Anforderungen von anderen Schnittstellen wie Ihrem 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"
'

Wenn Sie auf allen Schnittstellen nach Anfragen suchen möchten, können Sie den -sTeil insgesamt löschen:

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

Wenn ich auf meinem System dieselbe Art der Quellhostfilterung ausführen möchte, muss -sich entweder 127.0.0.1oder Folgendes verwenden localhost.localdomain:

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

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

In jedem Fall sollte eine der oben genannten Optionen für Sie funktionieren:

$ 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
$

Danke vielmals! Das Ändern von localhost auf 127.0.0.1 schien den Trick bei Firefox zu machen. Ich denke, Chrome geht anders vor.
MinaHany
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.