2016-08-17 19 views
0

こんにちは、Pythonを使用してサーバーにログオンし、clustatコマンドを実行してクラスターの状態を確認するスクリプトを作成しようとしています。これを行うと、次のエラーが表示されます。 /bin:sh:clustat:command not found これは理解しているとおり、使用されている非標準のbashコマンドであるため、コマンドを実行できません。私は、誰かがこれを取り戻すためにいくつかのアイディアを持っていることを期待していました。以下はPythonスクリプトでClustatコマンドが見つかりませんでした。

は、コマンドを実行するために使用する方法である:(私はそれが正常に動作し、システムにsshをするantoher方法を持っている)

def run_cmd(command): 
"""Function for running command on the system.""" 
proc = subprocess.Popen([command], stdout=subprocess.PIPE, shell=True) 
(out, err) = proc.communicate() 
return out 

間違って行くように見える場所です。私は他のコマンドと一緒に使用することができる午前としてrun_cmdメソッドの動作を知っている:

run_cmd("clustat >> out.txt") 
return "" 
+0

'clustat >> out.txt'は端末で動作しますか? – DeepSpace

+0

私がサーバにログインしていれば正常に動作します。私が理解する限り、サブプロセスを使ってコマンドを実行すると、あなたがシステム上にいるかのようにコマンドを実行しなければならないので、私は混乱します。 –

+0

いいえ、 'subprocess'は魔法のように接続してリモートシステムにログインしません。 – DeepSpace

答えて

2

subprocessはコマンドローカルを実行します。

リモートマシンでコマンドを実行するには、paramiko.SSHClientを使用する必要があります。

ssh_client = paramiko.SSHClient() 
ssh_client.connect(host='some_host', username='username', password='password') 

ssh_client.exec_command('clustat >> out.txt') 
関連する問題