user-add [-x] [-H] config [username [ARG1 [ARG2 ... ]]]
Модуль представляет собой интерпретатор упрощенного языка конфигурационного файла, предназначенный для автоматизации внесения изменений в различные системные конфигурационные файлы. В основном используется при добавлении новых пользователей, однако нет причин этим ограничиваться.
Вносимые изменения обрамляет специального вида комментариями, упрощающими открытие/закрытие пользователя в дальнейшем (смотрите модули user-close и user-open). Пример добавляемой модулем информации:
... # {<test> # 08-Aug-1996 system test user-login uutest # }<test> # 08-Aug-1996 |
Модуль не обладает никакими полезными ``навыками'' без указания конфигурационного файла - стратегии действий (смотрите ниже). Количество и смысл аргументов также зависят от конфигурации с одним ограничением - первым аргументом (если он есть) должен быть указан идентификатор пользователя.
Поиск конфигурационного файла модуль сначала производит в каталоге
`umanage/'
домашнего каталога сервера, затем в домашнем
каталоге и наконец в текущем каталоге.
Если задана опция `-x' , то в стандартный поток выводится информация о всех обрабатываемых файлах.
Опция `-H' заставляет модуль выдать краткую информацию о себе, а если одновременно с ней указано и имя конфигурационного файла, то выводится информация определенная в нем - обычно назначение и правила использования (смотрите ниже).
Конфигурационный файл состоит из набора строк. Пустые строки и строки, начинающиеся с символа `#' игнорируются. Каждая значащая строка состоит из команды и следующих за ней через пробел и/или табуляцию аргументов (если они необходимы). Идущие вподряд пробелы и/или табуляции в строке перед обработкой сжимаются в одиночные.
Интерпретатор читает конфигурационный файл и, по мере чтения, выполняет встречающиеся ему команды. Рассмотрим их в алфавитном порядке:
Добавляет указанную строку к файлу. Команда может встречаться только между командами file и end.
Сравнивает число аргументов, заданное при запуске модуля user-add с указанным значением num. Если не совпадает, то выводится сообщение об ошибке и выполнение прерывается. При подсчете количества аргументов идентификатор пользователя тоже учитывается. Команда введена для страховки от ошибок.
Сменяет символ (символы) комментария используемые интерпретатором для пометки добавляемых им служебных записей. По умолчанию символ комментария неопределен и служебная информация не добавляется. Такие изменения в дальнейшем очень тяжело отменить или скорректировать - будьте внимательны!
Выводит строку на терминал оператору. Удобно для вывода информации о том, какие действия в данный момент выполняются - просто как правило хорошего тона.
Завершает блок операций с файлом, заданный командой file. Эта команда обязательно должна присутствовать!
Задает файл с которым будут проводиться дальнейшие операции. Имя файла должно включать в себя полный путь!
Задает строку подсказки, которая будет выведена, если ключ `-H' задан во входной строке вместе с именем конфигурационного файла.
Запускает указанную программу на выполнение. Удобно для случаев, когда требуются сложные действия.
Все строковые величины, используемые командами интерпретатора могут содержать макросы. Т.е. перед выводом или иным использованием, определенные последовательности символов заменяются на приписанные им значения. Рассмотрим допустимые макросы:
Заменяется на пробел. Так как двойные пробелы и табуляции заменяются перед выводом на одиночные пробелы, о такой макрос бывает удобен для вставки в текст ``неудаляемого'' пробела.
Заменяется на табуляцию.
Заменяются на одиночный знак процента.
Заменяется на переданный в командной строке аргумент. Вместо `n' должен быть номер аргумента (добавлять 0 перед числами недопустимо).
Заменяется на текущие время и дату в формате `HH:MM DDMM/YYYY/'.
Заменяется на имя конфигурационного файла.
Заменяется на имя пользователя, переданное в командной строке следом за именем конфигурационного файла.
Пример конфигурационного файла:
help Создает три файла в текущем каталоге: help \tfoo, содержащий первый аргумент help \tbar, содержащий второй help \tfoobar, содержащий оба, но без комментариев help и отсылает уведомление postmaster'у # # Проверка аргументов (с учетом username) # argsnum 3 # comment # # file foo add arg1 %ARG1% end # file bar add arg2 %ARG2% end # file foobar comment add args\t1=%ARG1% 2=%ARG2% u=%USERNAME% end # update mail -s "foobar modified" postmaster < foobar |