SSHコマンドの結果をパイプしてローカルに保存する

SSHコマンドの結果をパイプしてローカルに保存する

実行するスクリプトには、すべてのリモートコマンドの結果をコンソールのSTDOUTに出力する次のコマンドがあります。

ssh -t my-server1.my-domain.net  << EOF
    ./bin/myApp
    echo "Hello World"
    ls ~/
EOF 

この出力結果をローカルコンピュータに保存するにはどうすればよいですか?通常のパイプティーを使用したり、>たとえばストリームをファイルにリダイレクトしてみました。

ssh -t my-server1.my-domain.net  << EOF
    ./bin/myApp
    echo "Hello World"
    ls ~/
EOF 2&>1 test.txt

または

ssh -t my-server1.my-domain.net  << EOF
    ./bin/myApp
    echo "Hello World"
    ls ~/
EOF 2&>1 | tee test.txt

リモートシステムでコマンドが実行されるのを見て、コンソールに出力し、ローカルシステムのファイルに書きたいと思います。

答え1

これは、ssh コマンドの後ろではなく、コマンドと同じ行にsshパイプを接続することによって行うことができます。

STDOUTパイプで接続するには、次のものをtest.txt使用できます。

ssh -t my-server1.my-domain.net  << EOF | tee test.txt
    ./bin/myApp
    echo "Hello World"
    ls ~/
EOF

にのみ出力し、 にはtest.txt出力しない場合は、以下をSTDOUT使用できます。

ssh -t my-server1.my-domain.net  << EOF > test.txt
    ./bin/myApp
    echo "Hello World"
    ls ~/
EOF

関連情報