SSHとdockercliを介して実行されるgrepパターンにスペースを含める方法

SSHとdockercliを介して実行されるgrepパターンにスペースを含める方法

たとえば、スペースを含むパターンを使用してリモートサーバーからログファイルを収集したいとします。

grep 'words with spaces' log.txt

難しい部分は、SSHを介してリモートDockercliコマンドを実行することです。それは次のとおりです。

ssh hostname "dockercli exec -u username dockername grep 'sentence with spaces' logs/filename.log"

コンテナがgrepコマンドを実行すると、追加の引用符が削除されます。私は引用符をエスケープし(コマンドは返されません)、順序を反転させて(「古い」)\ sを試しました。

SSHとdockercliを介して実行されるgrepパターンにスペースを含める方法は?

答え1

私はそうしませんでしたが、dockercli代替sh -c実験としてデータを解析するための同様のコマンドを提供することもできます。

正しい文字列が渡されたことを確認するためにgrep例を使用します。

echo 'a   b' | ssh localhost "grep 'a   b'"

これは、3つのスペースを含む入力文字列と一致します。追加のレイヤーを追加するには、sh -c次のものが必要です。

echo 'a   b' | ssh localhost "sh -c 'grep \"a   b\"'"

再び

echo 'a   b' | ssh localhost "sh -c 'sh -c \"grep   \\\"a   b\\\"\"'"

関連情報