我一直在尝试在python中执行openshift命令。 我有这样的东西,我需要尝试从python。
oc get quota --all-namespaces -o template --template="\
status.used.limits.cpu ,\
status.used.limits.memory,\
spec.hard.limits.cpu,\
spec.hard.limits.memory,\
{{- println -}}
{{range .items }}\
{{ .kind }},{{ .metadata.namespace }},\
{{ -1 | (index .status.used \"limits.cpu\" ) }},\
{{ -1 | (index .status.used \"limits.memory\" ) }},\
{{ -1 | (index .spec.hard \"limits.cpu\" ) }},\
{{ -1 | (index .spec.hard \"limits.memory\" ) }},\
{{- println -}}{{end}}" | column -t -s ','
现在我尝试使用子进程调用并尝试类似下面的内容
cmd = ['oc get quota --all-namespaces -o template --template=status.used.limits.cpu ,'
'status.used.limits.memory,spec.hard.limits.cpu,spec.hard.limits.memory,{{- println -}}{{range .items }}'
'{{ .kind }},{{ .metadata.namespace }},{{ -1 | (index .status.used \"limits.cpu\" ) }},'
'{{ -1 | (index .status.used \"limits.memory\" ) }},{{ -1 | (index .spec.hard \"limits.cpu\" ) }},'
'{{ -1 | (index .spec.hard \"limits.memory\" ) }},{{- println -}}{{end}} | column -t -s ,'
]
p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output,err = p.communicate()
print(output)
我收到错误OSError: [Errno 36] File name too long
我是否需要在文件中包含此命令并阅读它?我不知道那是怎么回事。另外,我是否需要将cmd
中的每个单词都放在引号中?