如何从python的标准输出(stdout)中获取字段值?

胡椒

我正在尝试从 python 的标准输出中获取一个值。这是我从命令行运行的命令,用于列出 GKE 集群中的防火墙。

gcloud compute firewall-rules list \
  --project <myproject> \
  --filter="name~gke-cluster-123456789*"

当命令在堡垒服务器上执行时,输出类似于:

NAME                      NETWORK  DIRECTION  PRIORITY  ALLOW                         DENY  DISABLED
gke-cluster-XXX-all  default  INGRESS    1000      tcp,udp,XXX                         False
gke-cluster-XXX-ssh  default  INGRESS    1000      tcp:XX                              False
gke-cluster-XXX-vms  default  INGRESS    1000      icmp,tcp:1-XXXXX,udp:1-XXXXX        False

我需要在 python 中做同样的事情,但只获取 name 字段。但是,下面的代码获取防火墙名称和NAME标签。

我的代码的一部分

cmd = gcloud compute firewall-rules list --project <myproject> --filter="name~gke-cluster-123456789*"
stdin,stdout,stderr = ssh.exec_command(cmd)
for line in stdout.read().splitlines():
   print(line.split()[0])

实际输出:

NAME
gke-cluster-XXX-all
gke-cluster-XXX-ssh
gke-cluster-XXX-vms

预期输出:(我需要的是)

gke-cluster-XXX-all
gke-cluster-XXX-ssh
gke-cluster-XXX-vms

如何删除输出的第一行?

达兹威尔金

您可以单独使用 gcloud 执行此操作:

gcloud compute firewall-rules list \
--filter=${FILTER} \
--format="value[no-heading](name)" \
--project=${PROJECT}

请参阅:https : //cloud.google.com/sdk/gcloud/reference/topic/formats

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章