SSHコマンドによる複数行出力

SSHコマンドによる複数行出力

SSHリモートコマンドで複数行の出力が必要です。

私のローカルコンピュータでこのコマンドを使用すると、正しい出力が得られます。

sudo docker stats --no-stream container1 container2 container3 | awk '{if (NR!=1) {print $1,$9,'$(date +%s)'}}'

container1 72.85 1471958776
container2 14.83 1471958776
container3 9.362 1471958776

リモートで起動すると、改行文字が削除されます。

ssh -o LogLevel=QUIET -t -i key.pem user@host sudo docker stats --no-stream container1 container2 container3 | awk '{if (NR!=1) {print $1,$9,'$(date +%s)'}}'

container1 72.85 1471957426 container2 14.83 1471957426 container3 9.362 1471957426

ローカル出力(1行に1つ)と同じ結果を得るにはどうすればよいですか?

答え1

-t私はこれが議論のためであると信じていますssh。これはtty割り当てを強制し、端末出力(色、制御シーケンス)を要求します。ただし、出力をローカル端末(これを行う方法を知っています)に表示するのではなくパイプしますawk。 (それから得られるものを正確に見るために代わりにssh使用してください。)送信されない出力は避けるべきです。端末の状況を解決したり、隠された制御シーケンスを整理してみてください。後者がより難しいので前者をお勧めします。cat -Aawk-t

答え2

私はxargs次のコマンドで問題を解決しました。

echo ${RESULTS} | xargs -n3

関連情報