나는 bash(1) 매뉴얼 페이지에서 이것을 발견했습니다. 이 인터페이스를 제공하는 운영 체제나 커널 모듈이 있습니까? 내 Debian 설치에서 이것을 시도했는데 장치가 없습니다.
감사해요
/dev/tcp/host/port
If host is a valid hostname or Internet address, and port is an integer port number or service
name, bash attempts to open the corresponding TCP socket.
/dev/udp/host/port
If host is a valid hostname or Internet address, and port is an integer port number or service
name, bash attempts to open the corresponding UDP socket.
솔루션/답변: 이것은 작동하며 쉘의 기능입니다. 테스트하려면:
$ nc -l -p 5555
echo Hello > /dev/tcp/localhost/5555
$ nc -l -p 5555
Hello
아주 멋지다.
답변1
Jeff가 말했듯이 이것은 함수입니다.Bash에 의해 구현됨, 커널이 아닙니다. 이는 쉘 스크립트나 쉘 명령줄에서만 작동하며 다른 프로그램에서는 열 수 없습니다 /dev/tcp/...
.
이를 커널 모듈로 구현하려면 새로운 가상 파일 시스템을 제공해야 합니다.
실제로 작동하는 모습을 보려면 Bash와 netcat을 결합하면 됩니다. 달리기
nc -l -p 5555
터미널에서는
echo Hello > /dev/tcp/localhost/5555
다른 한편으로는 실행 중인 터미널에 "Hello"가 표시됩니다 nc
.