我尝试使用python
中的子进程执行OpenStack CLIopenstack volume list | grep -w my_vm1
output = subprocess.check_output(cmd, shell=True)
在这种情况下
cmd = 'openstack volume list | grep -w my_vm1'.
我观察到输出为空。我试过的时候:
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
如果我打印输出var,它会显示“type'exception.OSError'”。我错过了什么吗?
答案 0 :(得分:0)
您似乎遇到了OSError异常。
我通常在try / expect中运行子进程命令来捕获问题,并使用pipe和communic()从命令中获取输出。我发现这种流程更具逻辑性。
这样的事情:
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)
当然,您可以作为运行脚本的同一用户运行该命令,它应该可以工作。如果没有,这应该显示一些错误消息,授予该规则正在播放命令。
我希望这有帮助!