/ dev / tcp nicht gefunden

21

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, sodass das Problem darin besteht, wie ich ihn verwende /dev/tcp:

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

Ich bin in Ubuntu 13.04, also die Fähigkeit , sollte auf meinem System sein. Was mache ich falsch? Was sind die Regeln für die /dev/tcpordnungsgemäße Verwendung ?

IQAndreas
quelle
1
Hier ist ein funktionierendes Beispiel
jfs

Antworten:

34

Sie müssen es in Weiterleitungen verwenden :

Bash behandelt mehrere Dateinamen, insbesondere 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 gültiger Dienstname ist, versucht Bash, den entsprechenden TCP-Socket zu öffnen.

So:

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

ist der richtige Weg, um es zu verwenden.

Bei Verwendung /dev/tcp/74.125.225.19/80in einer Pipe wurde bashversucht, einen Befehl mit dem Namen auszuführen, /dev/tcp/74.125.225.19/80und ein Fehler gemeldet, da diese Datei nicht vorhanden war.


Die Fähigkeit zum Behandeln /dev/tcp/host/portund /dev/udp/host/portUmleiten wurde bashin Version 2.04 hinzugefügt .

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

cuonglm
quelle
Ich sehe, so /dev/tcpwird als "Datei" und nicht als Skript behandelt.
IQAndreas