如何从subprocess.call()方法执行的多列输出中提取信息?
我有这个命令运行:
test = subprocess.call('kubectl get ingress -o wide', shell=True)
print(test)
它将响应返回为:
NAME HOSTS ADDRESS PORTS AGE
gateway * 35.202.20.241 80 52m
我想检索ADDRESS列值以获取IP地址。
我如何实现这种情况?
答案 0 :(得分:2)
在Python中,subprocess.call
函数只返回errorcode
,如0,1等。要获得命令的实际输出,可以使用subprocess.check_output
函数。
在Shell中,awk
可以使用像print $3
这样的列号来帮助提取列。要排除行标题,请使用if (NR>1)
等条件。
这是一个如何实现它的例子。
import subprocess
address_col = subprocess.check_output("kubectl get ingress -o wide | awk '{ if(NR>1) print $3; }'", shell=True)
addresses = address_col.splitlines()
print addresses