paramikoでパイプコマンドを実行するにはどうすればよいですか? 私はこれをやっています:
statement = 'grep thing file | grep thing2 | tail -1'
last_msg = conn.execute(statement)
のみの出力が得られますgrep thing file。
grep扱いがわからないからです|。いくつかの厄介なエスケープの準備をしてください:
statement = """sh -c 'grep thing file | grep thing2 | tail -1'"""
これにより、反対側にシェルが作成され、文字列を解釈するように要求されますgrep thing file | grep thing2 | tail -1。sh -c単一の引数のみを受け入れるため、一重引用符が必要です。
そうすれば、シェルがパイプを作成し、すべてのコマンドを実行します。fileまた、ファイル名にスペースが含まれていないことを確認してください。その場合は、 を試してください"file"。
ご覧のとおり、これはすぐに非常に醜くなります。パイプラインをシェルスクリプトに入れることをお勧めします。次に、引用符を避けて、スクリプトを実行するだけsh -c script.shです。