如何从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我想检索地址列值以获取IP地址。
我该如何实现这个场景呢?
发布于 2018-01-10 23:37:41
在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 addresseshttps://stackoverflow.com/questions/48189768
复制相似问题