我正在尝试调试在远程服务器上执行的 shell 脚本,但我无权访问脚本的标准输出。我可以重定向输出以通过套接字吗?
答案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。我没有成功连接标准输入,但应该是可能的。
(此脚本的早期版本替换nc
为exec
;这适用于 Zsh,但不适用于 BusyBox 的 shell,ash。)