원격 서버에서 실행되는 셸 스크립트를 디버깅하려고 하는데 스크립트의 표준 출력에 액세스할 수 없습니다. 소켓을 통과하도록 출력을 리디렉션할 수 있나요?
답변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/f
stderr을 포함하도록 추가할 수 있다는 점에 유의하십시오. stdin 연결에 성공하지 못했지만 가능해야 합니다.
(이 스크립트의 이전 버전이 대체되었습니다 nc
. exec
이는 Zsh에서는 작동하지만 BusyBox의 셸인 ash에서는 작동하지 않습니다.)