バックグラウンドでSSHを介して実行されているプロセスの出力リダイレクト

バックグラウンドでSSHを介して実行されているプロセスの出力リダイレクト

私の一般的な質問は次のとおりです。リモートサーバーにログインし、継続的に実行されているプロセスを開始し、そのプロセスの標準出力を自分のローカルコンピュータのファイルにリダイレクトし、すべてのタスクをバックグラウンドで(自分のローカルコンピュータで)実行するにはどうすればよいですか。 )?

具体的には、リモートRaspberry Piから私のローカルコンピュータ(実際にはCygwinを実行している別のWindowsリモートコンピュータ、短く言うと)にtshark出力をストリーミングしてログファイルに書き込もうとしています。まず、出力リダイレクトなしでコマンドを実行します。

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch"

これは期待どおりに機能するようです。端末からデータストリームを受信します。次に、出力リダイレクトを追加してみました。

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch" \
> /var/tshark.out

これも予想通りのようです。端末に標準エラーが記録されていることを確認し、プロセスを終了して出力ファイル(/var/tshark.out)を調べて、tsharkの標準出力を確認してください。次に、私のコンピュータのバックグラウンドで実行してみました。

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch" \
> /var/tshark.out &

残念ながら、これは所望の効果を得ることができなかった。出力ファイルを確認したときは空で、ジョブの状態を確認したとき(「jobs」コマンドを実行して)停止したことがわかりました。以下はジョブの出力です(読みやすくするために少しフォーマットを変更しました)。

[1]+  Stopped   ssh pi@remotehost
                "sudo tshark
                -i wlan1mon
                -I -l -f broadcast
                -Y wlan.fc.subtype==4
                -T fields
                -e wlan.sa
                -e frame.time_epoch"
                > /var/tshark.out &

これはバックグラウンドとリモートプロセスとローカルプロセスのさまざまな置換を試みましたが、役に立ちませんでした。

ベストアンサー1

使用された-fスイッチsshは、認証および他の潜在的な対話ステップの後にコマンドをバックグラウンドに送信します。

おすすめ記事