Предполагается, что средства GNU:
find . -mtime -1 -exec bash -c \
'for f; do tac "$f" | grep -m1 fileprefix; done' _ {} +
-121--43580- Как насчет:
find . -mtime -1 -name "fileprefix*" -exec sh -c \
'echo "$(grep 'search string' $1 | tail -n 1),$1"' _ {} \;
Приведенный выше пример дает хороший результат с последним вхождением последовательности поиска в каждый файл, за которым следует соответствующее имя файла после запятой (измените часть, «$1» под эхом, чтобы изменить форматирование или удалить его, если это необязательно). Пример вывода для поиска последовательности поиска «» 10 «» в файлах с префиксом имени «» file «»:
[dmitry@localhost sourceDir]$ find . -mtime -1 -name "file*" -exec sh -c 'echo "$(grep '10' $1 | tail -n 1),$1"' _ {} \;
Another data 02 10,./file02.log
Some data 01 10,./file01.log
Yet another data 03 10,./file03.log
-121--43583- find . -mtime 1 -name 'fileprefix*' -exec grep -Hn 'search string' {} + |
sort -t: -k1,2 -n |
awk -F: '{key=$1 ; $1="" ; $2="" ; gsub(/^ /,"",$0); a[key]=$0}
END {for (key in a) { print key ":" a[key] }}'
Используются параметры GNU grep
-H
и -n
, чтобы всегда печатать как имя файла, так и номер строки всех совпадений, затем сортируется по имени файла и номеру строки и помещает его в трепок, который сохраняет последнее совпадение для
Довольно грубый метод, но он работает.
Если root
может удаленно войти в систему, nologin
игнорируется. Тем не менее, большинство здравомыслящих администраторов не разрешат root
напрямую удаленно входить в систему в пользу авторизованного пользователя, входящего в систему и использующего sudo
. Однако, если последнее не так, root
может войти в систему и прервать завершение работы.
nologin
игнорируется для пользователя root. Таким образом, вы можете использовать SSH для подключения с правами root, но у вас, вероятно, есть дистрибутив, который по умолчанию не разрешает вход в систему root. Вы можете создать ключ SSH и поместить его в ~root/.ssh/authorized_keys
, после чего вы сможете войти с этим ключом как root.
Помимо использования учетной записи «root» для создания нового ssh
соединения, мы можем использовать PAM, чтобы разрешить вход в систему определенным пользователям или группам.
Конфигурации PAM sshd
расположены в :/etc/pam.d/sshd
, которые отвечают за то, что вы ищете.
Редактируя этот файл и используя pam_succeed_if.so
, мы можем разрешить вход в систему определенному пользователю или группе, даже если /run/nologin
существует на машине.
pam_succeed_if.so is designed to succeed or fail authentication based on characteristics of the account belonging to the user being authenticated or values of other PAM items. One use is to select whether to load other modules based on this test.
Таким образом, мы используем его, чтобы определить, следует ли нам загружать pam_nologin.so
модуль или нет, основываясь на вашем имени пользователя или группе пользователей -.
Откройте файл с помощью вашего любимого текстового редактора:
$ sudo vi /etc/pam.d/sshd
И найди эти строки:
# Disallow non-root logins when /etc/nologin exists.
account required pam_nologin.so
Добавьте эту строку между ними:
account [default=1 success=ignore] pam_succeed_if.so quiet user notingroup sudo
Итак, теперь строки должны выглядеть так:
# Disallow non-root logins when /etc/nologin exists.
account [default=1 success=ignore] pam_succeed_if.so quiet user notingroup sudo
account required pam_nologin.so
Теперь пользователи из группы sudo
могут войти в систему, даже если /run/nologin
существует.
И разрешить конкретному пользователю:
account [default=2 success=ignore] pam_succeed_if.so quiet user != username
Для более гибких условий оформить заказ:
man pam_succeed_if