CGIでスクリプトを実行すると、詳細な出力がありません

CGIでスクリプトを実行すると、詳細な出力がありません

これは私のシェルスクリプトです

#!/bin/bash
echo "Content-type: text/plain"
echo ""

sshpass -p $pass ssh -v -p $port -t -o StrictHostKeyChecking=no root@$ip "cd / && ls && exit"

ネットワークまたはコマンドラインから実行できます。

コマンドラインから実行すると、「-v」(詳細モード)などのデバッグ情報を含む多くの出力が表示されます。

しかし、ネットワーク経由で実行されたときに私が見るのは、フォルダリスト(実行されたコマンドの出力)だけです。他のデータはありません。

ネットワーク経由でこのスクリプトを実行すると拡張データが失われるのはなぜですか?コマンドラインを介して実行すると、なぜそこにありますか?

ネットワーク経由で実行されているときに存在するかどうかを確認できますか?

答え1

あなたのスクリプトは、標準出力ではなく標準エラーで「追加データ」を送信しています。

ネットワーク経由でこのスクリプトを実行すると拡張データが失われるのはなぜですか?

seb サーバとスクリプト間で使用される CGI インタフェースはスクリプトの標準のみを使用するため出力基準ではない流れを考えてください間違い小川。基準間違い他の場所にいるかもしれません。ネットワークサーバーのエラーログでも、どこにもない可能性があります。

コマンドラインを介して実行すると、なぜそこにありますか?

端末の標準出力と標準エラーは、基本的に端末自体と同じ位置にあるためです。

ネットワーク経由で実行されているときに存在するかどうかを確認できますか?

標準エラーを標準出力と同じ場所にリダイレクトできます。

exec 2>&1

(ファイル記述子2は標準エラー、ファイル記述子1は標準出力です。)

関連情報