현재 스크립트의 출력을 소켓으로 리디렉션

현재 스크립트의 출력을 소켓으로 리디렉션

원격 서버에서 실행되는 셸 스크립트를 디버깅하려고 하는데 스크립트의 표준 출력에 액세스할 수 없습니다. 소켓을 통과하도록 출력을 리디렉션할 수 있나요?

답변1

출력을 fifo로 리디렉션하고 fifo를 입력으로 사용하여 이를 달성할 수 있었습니다 nc.

#/bin/sh -e

# create a fifo
unlink /tmp/f
mkfifo /tmp/f

# connect to the server in the background
nc localhost 4444 < /tmp/f &

# redirect stdout to the fifo
exec > /tmp/f

# an example that writes to stdout
while true; do
    sleep 1
    echo "hello world"
done

이는 표준 출력을 소켓에 연결하여 exec 2> /tmp/fstderr을 포함하도록 추가할 수 있다는 점에 유의하십시오. stdin 연결에 성공하지 못했지만 가능해야 합니다.

(이 스크립트의 이전 버전이 대체되었습니다 nc. exec이는 Zsh에서는 작동하지만 BusyBox의 셸인 ash에서는 작동하지 않습니다.)

관련 정보