Bash는 외부 바이너리 없이 /dev/tcp에서 읽습니다.

Bash는 외부 바이너리 없이 /dev/tcp에서 읽습니다.

Bash TCP 소켓을 사용하여 파일을 읽으려고 합니다.

그래서 저는 호스트 컴퓨터에 있습니다.

nc -l 8888 < /etc/passwd

다른 컴퓨터에서는

echo </dev/tcp/127.0.0.1/8888

하지만 예상대로 파일을 읽지 못하고 빈 줄이 나타납니다.

작동한다는 건 알지만 cat < /dev/tcp/xxx/xxxx외부 바이너리 없이도 할 수 있나요?

편집하다

$()그래서 구문을 시험해 보았습니다 .

# echo $(</dev/tcp/127.0.0.1/8888) > file
bash: /dev/tcp/127.0.0.1/8888: No such file or directory

답변1

while루프를 사용할 수 있습니다 .

while IFS= read -r line; do
    printf '%s\n' "$line"
done < /dev/tcp/localhost/8888

관련 정보