/ dev / tcp tidak ditemukan

21

Ketika saya mencoba menjalankan perintah berikut:

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

Saya mendapatkan pesan kesalahan berikut:

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

Perintah berikut berfungsi dengan baik, jadi masalahnya melibatkan bagaimana saya menggunakan /dev/tcp:

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

Saya di Ubuntu 13.04, jadi kemampuannya harus ada di sistem saya. Apa yang saya lakukan salah? Apa aturan untuk menggunakan /dev/tcpdengan benar?

IQAndreas
sumber

Jawaban:

34

Anda harus menggunakannya dalam pengalihan :

Bash menangani beberapa nama file secara khusus ketika mereka digunakan dalam pengalihan, seperti yang dijelaskan dalam tabel berikut:

...

/ dev / tcp / host / port

Jika host adalah nama host atau alamat Internet yang valid, dan port adalah nomor port integer atau nama layanan, Bash mencoba untuk membuka soket TCP yang sesuai.

Begitu:

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

adalah cara yang tepat untuk menggunakannya.

Ketika Anda menggunakan /dev/tcp/74.125.225.19/80pipa, bashmencoba menjalankan perintah yang bernama /dev/tcp/74.125.225.19/80dan melaporkan kesalahan karena file itu tidak ada.


Kemampuan untuk menangani /dev/tcp/host/portdan /dev/udp/host/portmengarahkan ulang ditambahkan ke bashdalam versi 2.04.

Anda perlu dikompilasi bashdengan --enable-net-redirectionsopsi.

cuonglm
sumber
Begitu ya, jadi /dev/tcpdiperlakukan sebagai "file" dan bukan skrip.
IQAndreas