我只想得到gitlab跑步者的名单。
因此,gitlab-runner list 2>&1的输出是:
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
default_runner Executor=shell Token=251cda361f983e612b27381e2f73ad URL=http://10.6.20.230
test runner Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230请注意,运行程序的名称可以在其中包含空格。
因此,我尝试了以下几点:
gitlab-runner list 2>&1 | awk -F'Executor' '{if(NR>1)print $1}'给了我很多我想要的东西(除了我需要删除的尾随空格)。
default_runner
test runner但是,如果我将字段分隔符更改为Executor=,希望使其更加显式,它将不再工作。它返回整行。
$ gitlab-runner list 2>&1 | awk -F'Executor=' '{if(NR>1)print $1}'
default_runner Executor=shell Token=251cda361f983e612b27381e2f73ad URL=http://10.6.20.230
test runner Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230我试过用Executor\=逃避它,但没有结果。我怎么能在我的分裂中包括等号?
编辑:
如果我把其中一条线回音到awk里就行了。
$ echo "test runner Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230" | awk -F'Executor=' '{print $1}'
test runner另外要注意的是,无论出于什么原因,gitlab-runner list都会打印到stderr。这就是为什么我重定向到stdout之前,我烟斗到awk。也许我没有正确地重定向?但这并没有什么意义,因为awk在没有等号的情况下捡起了它。
发布于 2022-11-22 16:10:10
另一种可能是使用jq并将输出格式化为json
gitlab-runner --log-format json list 2>&1 >/dev/null | \
jq -r 'select(.msg|contains("runner-name")).Token'结合xargs
gitlab-runner --log-format json list 2>&1 >/dev/null | \
jq -r 'select(.msg|contains("runner-name")).Token' | \
xargs -i gitlab-runner unregister \
--url https://... \
--token '{}'https://stackoverflow.com/questions/46935757
复制相似问题