Какова цель дополнительных пользователей?

Изменено из ответа Дмитрия Васильянова.

В сценарии bash вы можете перенаправлять и заключать вывод с меткой времени построчно на лету.

Когда использовать:

  • Для заданий сценария bash вставьте строку перед основным сценарием
  • Для заданий без сценария создайте сценарий для вызова программы.
  • Для управления сервисами системой лучше использовать tailf для лог-файла, как сказал Дмитрий Васильян.

Пример с именем foo.sh :

#!/bin/bash
exec &> >(while read line; do echo "$(date +'%h %d %H:%M:%S') $line" >> foo.log; done;)

echo "foo"
sleep 1
echo "bar" >&2
sleep 1
echo "foobar"

И результат:

$ bash foo.sh
$ cat foo.log
May 12 20:04:11 foo
May 12 20:04:12 bar
May 12 20:04:13 foobar

Как это работает

  1. exec &> Перенаправить stdout и stderr в то же место
  2. > ( ...) конвейер выводит на асинхронную внутреннюю команду
  3. Остальная часть работает по мере расширения Дмитрия Васильянова.

Например:

  • отметка времени конвейера и запись в файл

     #! / Bin / bash 
    exec &>> (при чтении строки; do echo "$ (date + '% h% d % H:% M:% S ') $ line ">> foo.log; done;) 
     
    echo" некоторые команды сценария "
     / path-to / some- сторонние программы 
     
  • Или напечатайте метку времени и войдите в стандартный вывод

     #! / bin / bash 
    exec &>> (во время чтения строки; выполните echo "$ (date + '% h% d% H:% M:% S') $ line "; done;) 
     
    echo" некоторые команды сценария "
     / path-to / some- сторонние программы 
     

    , затем сохраните их в / etc / crontab параметр

     * * * * * root /path-to-script/foo.sh >> / path-to-log-file / foo.log 
     
6
05.11.2018, 14:17
2 ответа

Что ж, это может быть полезно, когда вы хотите смешать «ручные» поддерживаемые файлы паролей с автоматическим развертыванием «неизменяемых» локальных пользователей с такими инструментами, как, например, chef/puppet/ansible (есть и другой способ, да ).

0
27.01.2020, 20:30

Пакет Debian libnss -extrausers упрощает объединение пользователей и групп из двух источников:

Я регулярно использую свой личный домашний ПК и ноутбук для удаленного монтирования файловых систем с файлового сервера sec=krb5 NFS моего университетского факультета. Чтобы видеть и использовать в таких командах, как ls -l, groups, chgrp, cd ~user/и т. д., идентификаторы пользователей и групп, связанные с файлами, они должны быть перечислены в локальной базе данных getent/nsswitch. У меня есть моя частная семья -пользователей-членов в /etc/passwd. Я не хочу использовать LDAP на частном домашнем ПК или ноутбуке, так как это может привести к неудобным задержкам, когда сервер LDAP недоступен (, когда VPN для университетского факультета не работает ). Поэтому я просто использую сценарий, который регулярно копирует всех пользователей и группы с LDAP-сервера отдела в /var/lib/extrausers/{group,password}на мои личные машины.

Механизм /var/lib/extrausers/делает это чрезвычайно удобным, :мой скрипт может просто перезаписать все файлы там, без необходимости модифицировать /etc/{group,passwd}и отслеживать, откуда какая запись туда пришла. Я мог бы даже поддерживать там этих дополнительных пользователей и группы с помощью автоматически обновляемого пакета deb.

Сейчас я ищу похожее решение для macOS и хотел бы, чтобы оно тоже было /var/lib/extrausers. Какие-либо предложения?

1
27.01.2020, 20:30

Теги

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