/ dev / tcp ไม่พบ


21

เมื่อฉันพยายามเรียกใช้คำสั่งต่อไปนี้:

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

ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

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

คำสั่งต่อไปนี้ทำงานได้อย่างสมบูรณ์ดังนั้นปัญหาเกี่ยวข้องกับวิธีที่ฉันใช้/dev/tcp:

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

ฉันอยู่ใน Ubuntu 13.04 ดังนั้นความสามารถควรอยู่ในระบบของฉัน ผมทำอะไรผิดหรือเปล่า? กฎการใช้งาน/dev/tcpอย่างเหมาะสมมีอะไรบ้าง


คำตอบ:


34

คุณต้องใช้มันในการเปลี่ยนเส้นทาง :

Bash จัดการชื่อไฟล์หลายชื่อเป็นพิเศษเมื่อใช้ในการเปลี่ยนเส้นทางดังที่อธิบายไว้ในตารางต่อไปนี้:

...

/ dev / TCP / โฮสต์ / พอร์ต

หากโฮสต์เป็นชื่อโฮสต์หรือที่อยู่อินเทอร์เน็ตที่ถูกต้องและพอร์ตเป็นหมายเลขพอร์ตจำนวนเต็มหรือชื่อบริการ Bash จะพยายามเปิดซ็อกเก็ต TCP ที่เกี่ยวข้อง

ดังนั้น:

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

เป็นวิธีการใช้งานที่ถูกต้อง

เมื่อคุณใช้/dev/tcp/74.125.225.19/80ในไพbashพ์พยายามเรียกใช้คำสั่งชื่อ/dev/tcp/74.125.225.19/80และรายงานข้อผิดพลาดเนื่องจากไฟล์นั้นไม่มีอยู่


ความสามารถในการจัดการ/dev/tcp/host/portและ/dev/udp/host/portเปลี่ยนเส้นทางถูกเพิ่มเข้าไปbashในเวอร์ชัน 2.04

คุณต้องรวบรวมbashด้วย--enable-net-redirectionsตัวเลือก


ฉันเห็นดังนั้นจึง/dev/tcpถือว่าเป็น "ไฟล์" และไม่ใช่สคริปต์
IQAndreas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.