/ 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

우분투 13.04에 있으므로 기능 내 시스템에 있어야 합니다. 내가 무엇을 잘못하고 있지? /dev/tcp올바르게 사용하기위한 규칙은 무엇입니까 ?


답변:


34

리디렉션 에서 사용해야합니다 .

Bash는 다음 표에 설명 된 것처럼 리디렉션에 사용될 때 여러 파일 이름을 특별히 처리합니다.

...

/ dev / tcp / host / port

host가 유효한 호스트 이름 또는 인터넷 주소이고 port가 정수 포트 번호 또는 서비스 이름 인 경우 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옵션을 선택합니다.


나는 /dev/tcp스크립트가 아니라 "파일"로 취급된다고 본다 .
IQAndreas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.