0
bashスクリプトでリモートコマンドの出力をキャプチャする方法。例えばリモートsshコマンドの出力を変数に収集する
Iは、リモートコマンド出力を格納および使用する必要があり、複数のそのような場合、との大きいスクリプトのためにこれを計画ssh [email protected]$SUT<<EOD
COUNT=$(ls -la | wc -l)
EOD
について 。
bashスクリプトでリモートコマンドの出力をキャプチャする方法。例えばリモートsshコマンドの出力を変数に収集する
Iは、リモートコマンド出力を格納および使用する必要があり、複数のそのような場合、との大きいスクリプトのためにこれを計画ssh [email protected]$SUT<<EOD
COUNT=$(ls -la | wc -l)
EOD
について 。
それは次のようになります。
VAR=$(ssh "$USERNAME"@"$HOST" -- remote_command -option)
あなたがリモートでremote_command
を実行し、ローカル変数に格納します。それは上記のコマンドがすることです。あなたがリモートで複数行のコマンドを実行したい場合は
次ここにドキュメントを構築使用します。
VAR=$(ssh "$USERNAME"@"$HOST" <<EOF
remote_command -option
another_command
...
EOF
)
をところで、あなたは、リモートコマンドにローカル変数を補間する場合を除き、あなたはおそらく地元のシェルを無効にしますあなたはシェル変数を使用することができます上記のフォーム、リモートスクリプトのコマンド置換などで
VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF'
remote_command -option
another_command
...
EOF
)
:開始デリミタ('
に注意)として<<'EOF'
を使用して、ここでdocに展開。
VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF'
COUNT=$(remote_command -option)
another_command "${COUNT}"
if $((COUNT+1)) ; then
foo -bar
fi
... and so on. all expansions happen remotely
EOF
)
は私がリモートマシン – chozhan
のsshの$ USERNAMEする@ $のSUT << EOD COUNT =上で実行する必要が大きなロジックを記述するために計画しています最初と最後の行の間に、このフォーマットを使用していた。このような$(ls -la | wc -l) if [$ COUNT -eq 4]; remote_command2 fi EOD このようなことを計画しています。それが可能かどうかわからない場合 – chozhan
その場合、 '<< 'EOF''で後者のバージョンを使用してください – hek2mgl