/dev/tcp를 찾을 수 없습니다

/dev/tcp를 찾을 수 없습니다

다음 명령을 실행하려고 하면:

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올바르게 사용하기 위한 규칙은 무엇입니까 ?

답변1

에서 사용하셔야 합니다리디렉션:

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해당 파일이 존재하지 않기 때문에 오류를 보고했습니다.


버전 2.04에는 리디렉션 /dev/tcp/host/port처리 기능이 /dev/udp/host/port추가되었습니다 .bash

bash옵션 으로 컴파일해야 합니다 --enable-net-redirections.

관련 정보