2017-03-24 5 views
0

に空である私は、出力がnullであることが観察パイソン出力はOpenStackのCLI

この場合
output = subprocess.check_output(cmd, shell=True) 

cmd = 'openstack volume list | grep -w my_vm1'. 

にサブプロセスを使用して、OpenStackのCLI openstack volume list | grep -w my_vm1を実行しようとしました。私が試したとき:

output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) 

出力varを出力すると、 "type 'exceptions.OSError'"が表示されます。何か不足していますか?

答えて

0

OSError例外が発生しているようです。

私は通常、問題を捕まえるためにtry/expect内でサブプロセスコマンドを実行し、pipeとcommunicate()を使用してコマンドから出力を取得します。私はこの流れがより論理的であることを見出します。このような

何か:

try: 
    cmd = 'openstack volume list | grep -w my_vm1' 
    output = subprocess.check_output(cmd, 
            stdout=subprocess.PIPE, 
            stderr=subprocess.PIPE) 
    out, err = p.communicate() 
    print(out) 
except OSError: 
    print(err) 
    sys.exit(1) 

は確かにあなたがスクリプトを実行しているのと同じユーザーとしてコマンドを実行することができ、それが動作するはずです。そうでない場合、これはコマンドがルールによって再生されていることを示す何らかのエラーメッセージを表示するはずです。

こちらがお役に立てば幸いです。

関連する問題