
다음 명령을 실행하려고 하면:
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
.