다음 명령을 실행하려고 하면:
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
하고 파일이 존재하지 않기 때문에 오류를 보고해 보세요.
/dev/tcp/host/port
버전 2.04에는 처리 및 리디렉션 기능이 추가되었습니다 ./dev/udp/host/port
bash
bash
옵션을 사용하여 컴파일 해야 합니다 --enable-net-redirections
.