/dev/tcp nicht gefunden

/dev/tcp nicht gefunden

Wenn ich versuche, den folgenden Befehl auszuführen:

echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80

Ich erhalte folgende Fehlermeldung:

bash: /dev/tcp/74.125.225.19/80: No such file or directory

Der folgende Befehl funktioniert einwandfrei. Das Problem liegt also in meiner Verwendungsweise /dev/tcp:

echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80

Ich verwende Ubuntu 13.04, daher die Fähigkeitsollenauf meinem System sein. Was mache ich falsch? Welche Regeln gelten für die /dev/tcpordnungsgemäße Verwendung?

Antwort1

Man muss es verwenden inUmleitungen:

Bash behandelt mehrere Dateinamen speziell, wenn sie in Umleitungen verwendet werden, wie in der folgenden Tabelle beschrieben:

...

/dev/tcp/host/port

Wenn „Host“ ein gültiger Hostname oder eine gültige Internetadresse und „Port“ eine ganzzahlige Portnummer oder ein Dienstname ist, versucht Bash, den entsprechenden TCP-Socket zu öffnen.

Also:

printf "GET / HTTP/1.1\n\n" > /dev/tcp/74.125.225.19/80

ist die richtige Art, es zu verwenden.

Bei der Verwendung /dev/tcp/74.125.225.19/80in einer Pipe bashwurde versucht, einen Befehl mit dem Namen auszuführen /dev/tcp/74.125.225.19/80, und es wurde ein Fehler gemeldet, weil die Datei nicht vorhanden war.


Die Möglichkeit zur Handhabung /dev/tcp/host/portund /dev/udp/host/portUmleitung wurde bashin Version 2.04 hinzugefügt.

Sie müssen bashmit --enable-net-redirectionsOption kompiliert werden.

verwandte Informationen