Что именно происходит с моим пользователем jenkins?

awk обрабатывает каждую запись (по умолчанию запись - это строка) отдельно - для применения условий, охватывающих соседние строки, можно использовать функцию getline для чтения следующей записи и проверки ее на соответствие второму шаблону:

awk '/patterna/ { 
  a=$0
  if (getline > 0 && $0 ~ /patternb/) {
    print a
    print
  }
}' inputfile

В качестве альтернативы можно использовать sed

sed -n '/patterna/ {$!N; /\npatternb/p}' inputfile

Если вы хотите выводить первое совпадение /patternb/ после каждого совпадения /patterna/, предшествующее его /patterna/, то вы можете сделать stateful синтаксический анализатор, устанавливая флаг при каждом совпадении /patterna/ и снимая его при каждом /patternb/:

awk '
  /patterna/ {
    a=1; lasta=$0; next;
  } 
  /patternb/ && a==1 {
     a=0; print lasta; print;
  }' inputfile
2
06.11.2016, 05:02
2 ответа

На многих установках, оболочка входа для пользователя Jenkins установлена ​​на false или nologin :

$ grep jenkins /etc/passwd
jenkins:x:495:441:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/false

Поэтому, если вы попытаетесь войти в систему как пользователь Jenkins или переключитесь на него, система не позволит этого.

Лучший способ обойти это - запустить оболочку с использованием пользователя Jenkins:

$ sudo su - jenkins -s/bin/bash
-bash-4.1$ whoami
jenkins
-bash-4.1$ echo $HOME
/var/lib/jenkins
-bash-4.1$
-bash-4.1$ cd .ssh
-bash-4.1$ pwd
/var/lib/jenkins/.ssh
-bash-4.1$

Я использую этот метод для установки ключей SSH, к которым я хочу, чтобы мой сервер jenkins имел доступ на уровне CLI.

5
27.01.2020, 21:59

Если вы хотите войти как Дженкинс, вы можете сделать это с помощью

sudo su -s /bin/bash jenkins
2
27.01.2020, 21:59

Теги

Похожие вопросы