私は、BashスクリプトをPythonに変換してトレーニングをしたいと思っていました。 bashスクリプトはそうのように、ssh経由でそのDFのためのリモートホストに照会し、特定のフィールドのために返された行を検索:PythonでPythonでのgrep-ing
ssh $_host df 2>/dev/null | grep -i $_filesystem | grep :
、私は「DF」の出力を得るためにshlex.split
と組み合わせてsubprocess.call
を使用します。
_cmd = shlex.split("ssh %s df 2>/dev/null" % _host)
_test = subprocess.check_output(_cmd)
、タイプ文字列として_test戻り、私はそれを行の行を検索したい場合は、それが新しい行としてすべての文字を出力します。パイプ用のsubprocess.Popen
も機能しません。私がしたいのは、私のsearchstringがそれ以上の書式設定のために見つかった行を出力することだけです。
私はすでに解決策に近づいているいくつかの試みを見てきましたが、ほとんどはサブプロセス呼び出しによって返される文字列ではなく、定義されたキャリッジリターンでファイルを反復処理します。
Bashは、プロセスとやりとりするために特別に設計されたドメイン固有の言語です。 Pythonは何でもできる汎用言語です。私はあなたがシェルスクリプトでウェブサーバを書くのを見たいと思います。 –
それは全く役に立たないが、明確にしてくれてありがとう。 –
「正しい」方法は、 'ssh'を扱うことができるものをインポートすることです。私は 'ファブリック'(Google: "python fabric")をお勧めしたいと思います。現在のところ、Pythonからssh実行可能ファイルを呼び出すだけです。これは、物事がどのように行われるか(通常は)ではありません。あなたの背景をbashで理解できれば、bashのpythonとは違って**実行可能ファイル**ではなく**ライブラリ**を使うのが好きです。 –