将当前脚本的输出重定向到套接字

将当前脚本的输出重定向到套接字

我正在尝试调试在远程服务器上执行的 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。我没有成功连接标准输入,但应该是可能的。

(此脚本的早期版本替换ncexec;这适用于 Zsh,但不适用于 BusyBox 的 shell,ash。)

相关内容