Как отфильтровать PID из журналов безопасности Linux SSH?

Недавно я настроил GNU stow на своих машинах для хранения пользовательских -обширных материалов, таких как библиотеки под ~/.local, и столкнулся с проблемами при определении LD_LIBRARY_PATH, CPATHи LIBRARY_PATH, нечаянно поставив там двоеточие и так разбивая вещи.

Затем я нашел ваш вопрос, и ответ был не совсем элегантным ; -), и я написал для этого небольшую функцию, ее можно найти здесь:https://gist.github.com/rico-chet/0229e4c080d9f51a02535dd25a656a8a

## Copyright (C) 2018 Alex Thiessen 
## Copyright (C) 2018 https://unix.stackexchange.com/users/116858/kusalananda
## SPDX-License-Identifier: GPL-2.0-or-later
## 

function join() {
    if [ ${#} -eq 0 ]
    then
        echo "\`join\` appends elements separated by colons to a \`bash\` variable " >&2
        echo "usage: join   [element...]" >&2
        return 1
    fi
    variable="${1}"

    shift
    export ${variable}="${!variable:+${!variable}:}$(IFS=:; echo "${*}")"
}

// отредактировано по предложению @Kusalananda

0
13.08.2020, 20:49
2 ответа

Использование awk:

awk -F '[][]' '{print $2}'  /var/log/secure
  • -F '[][]'иметь разделитель файлов в виде открывающих и закрывающих фигурных скобок
  • $2для подтверждения второго поля.
1
18.03.2021, 23:12

Это немного неуклюже, но я надеюсь, что кто-нибудь выложит более короткую версию :Я использовал команду sed для замены символов «[» и «]» пустыми пробелами, а затем использовал команду awk для печати 6-го поля

# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491
0
18.03.2021, 23:12

Теги

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