получить токен в одной команде - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть файл конфигурации, в котором есть токен gitlab с двумя различными значениями токена. Есть ли способ получить эти значения в одной команде сценария bash. Поиск однострочной команды для получения токена.

concurrent = 10
check_interval = 0
[session_server]
  session_timeout = 1800
[[runners]]
  name = "gitlab"
  limit = 13
  url = "gitlab url"
  token = "xxxxxxxxxxxxx"
  executor = "docker+machine"
  [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = true
    shm_size = 0
  [runners.machine]
    IdleCount = 0
    IdleTime = 300
    MaxBuilds = 600
    MachineDriver = "amazonec2"
    MachineName = "gitlab-docker-machine-%s"
    OffPeakPeriods = ["* * 0-9,17-23 * * mon-fri *", "* * * * * sat,sun *"]
    OffPeakTimezone = "Europe/London"
    OffPeakIdleCount = 0
    OffPeakIdleTime = 30
[[runners]]
  name = "gitlab"
  limit = 11
  url = "gitlab url"
  token = "yyyyyyyyyyyyyyyyyyy"
  executor = "docker+machine"
  [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = true
    shm_size = 0

Ответы [ 3 ]

1 голос
/ 08 апреля 2019

Вы можете использовать grep, чтобы изолировать строки, содержащие токен:

cat test  | grep token'

Если вы хотите использовать только сам токен без "token =", добавьте awk:

cat test  | grep token | awk '{print $3}'

И если вы хотите получить только строку токена, без символа ", добавьте tr:

cat test  | grep token | awk '{print $3}' |  tr -d \"
1 голос
/ 08 апреля 2019

Это можно сделать одним awk более общим способом. Я добавил сюда переменную с именем occur, где мы можем упомянуть, например, какое значение вхождения мы хотим напечатать.

awk -v occur="2" -F' = ' '/token/{if(++count==occur){print}}'  config.txt

В этом случае будет напечатано значение только для 2-го поля токена строки (2-е вхождение). Можно изменить значение occur и вывести значение токена этой строки.



РЕДАКТИРОВАТЬ: Чтобы сделать его более быстрым с точки зрения обработки, я теперь добавляю exit в свой код, что вынудит программу awk выйти из программы как можно скорее, она найдет ее совпавшая строка совпадающего вхождения.

awk -v occur="2" -F' = ' '/token/{if(++count==occur){print;exit}}'  config.txt
0 голосов
/ 08 апреля 2019

Я думаю, что это возможно с помощью следующей команды.

awk -F' = ' '/token/ {print $2}'  config.txt | sed -n 1p

ИЛИ

awk -F' = ' '/token/ {print $2}'  config.txt | sed -n 2p

ИЛИ

awk -F' = ' '/token/ {print $2}'  config.txt | awk 'NR==1'

ИЛИ

awk -F' = ' '/token/ {print $2}'  config.txt | awk 'NR==2'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...