リモートサーバーで実行されているシェルスクリプトをデバッグしようとしましたが、スクリプトの標準出力にアクセスできません。ソケットを通過するように出力をリダイレクトできますか?
答え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では機能しません。)