これはPythonの質問ではないと私は思っています。返り値を保持しながら `grep`を使ったプロセスの出力を出力します
私はこのようなssh -t <host> <command>
を使用してリモートマシン上でコマンドを実行します。
if os.system('ssh -t some_machine [ -d /some/directory ]') != 0:
do_something()
(注:すべてがうまくいった場合には[ -d /some/directory ]
は一例では、0を返す任意のコマンドに置き換えることができる)
残念ながらssh
は「some_machine closeに接続」を表示します。私はそれを実行するたびに。
ばかげて私はssh -t some_machine <command> | grep -v "Connection"
を実行しようとしましたが、これはもちろんgrep
の結果を返します。
要するに、私はssh
経由でプロセスを実行し、不要な出力をフィルタリングしながら戻り値を評価したいと考えています。
編集:this questionが示唆している。 like
<command> | grep -v "bla"; return ${PIPESTATUS[0]}
確かにこれはアプローチかもしれませんが、それはbash
でのみ動作するようです。少なくともzsh
とPIPESTATUS
は定義されていないようです。
[bash:パイプ出力とキャプチャの終了ステータス]の複製が可能です(http://stackoverflow.com/questions/1221833/bash-pipe-output-and-capture-exit-status) –
sshがそのメッセージを表示していますあなたは '2/dev/null'でnullにパイプすることができます。 sshを使用している '-t'オプションでは、リモートコマンドのstderrをstdoutにリダイレクトして、失われてはいけません。 – ccarton
はい、それは私が今やっていることです。問題は、 'ssh'接続自体に何か問題があった場合に、診断出力を失うことです。 – frans