Приемы профессиональной работы в UNIX


ЗАЩИТА ЛИЧНОЙ ИНФОРМАЦИИ - часть 2


ИМЯ: acme

acme Отображение учетной информации обо мне

НАЗНАЧЕНИЕ

Генерирует опции, необходимые для вывода на экран информации обо мне, которая хранится в учетном файле.

ФОРМАТ ВЫЗОВА

acme [-l] [-u]

ПРИМЕР ВЫЗОВА

acme -u Выводит всю учетную информацию о пользователе с именем $LOGNAME

ТЕКСТ ПРОГРАММЫ

1 : 2 # @(#) acme v1.0 Give accounting info on me Author: Russ Sage 2а Дать учетную информацию обо мне   4 if [ "$1" != "-l" -a "$1" != "-u" ] 5 then echo "usage: acme [-l] [-u]" >&2 6 echo " -l for ttyline" >&2 7 echo " -u for user name" >&2 8 exit 0 9 fi   11 OPT="" 12 for ARG in $* 13 do 14 case $ARG in 15 -l) OPT="$OPT -l `basename \`tty\``";; 16 -u) OPT="$OPT -u $LOGNAME";; 17 *) OPT="$OPT $ARG";; 18 esac 19 done   21 echo "acctcom $OPT" 22 acctcom $OPT

ПЕРЕМЕННЫЕ СРЕДЫ ВЫПОЛНЕНИЯ

ARG Каждое значение, указанное в командной строке
LOGNAME Переменная среды, содержащая мое регистрационное имя
OPT Объединенный список всех опций и их аргументов

ОПИСАНИЕ

Зачем нам нужен командный файл acme?

Большинство больших систем UNIX запускают стандартное программное обеспечение для сбора учетной информации об использовании системы. Результаты учетных транзакций передаются обычно в файл /usr/adm/pacct. Фактически сбор учетной информации выполняется ядром системы. Каждый раз при завершении процесса программы сбора учетной информации в ядре производят одну запись. Переключателем, который включает и выключает эту операцию, является acct(2). Команды пользовательского уровня также взаимодействуют с системным вызовом (acct on(1M)) и печатают результаты сбора учетной информации (acctcom(1)).

Теперь, когда мы знаем, где находятся учетные записи и как они туда попадают, нам нужно напечатать эту информацию. Acctcom может печатать таблицы с информацией, но вам необходимо знать, какой использовать индекс. Просмотр может производится по номеру терминальной линии (это полезно, если идентификатор процесса был изменен командой setuid), по имени пользователя, по группе, по времени и т.д. Я наиболее часто использую опции поиска информации по номеру линии терминала и по имени пользователя. С их помощью вы можете получить список всех основных данных, имеющих отношение к вам. Когда вы вызываете acctcom с этими опциями, вам необходимо указать дополнительную информацию, такую как имя вашего терминала и ваше пользовательское имя. Было бы хорошо, если бы мы могли уменьшить количество нажатий на клавиши и объем вычислений, требуемых для получения информации. Для этого и предназначен acme.

Что делает acme?

Acme - это интерфейсный процессор для команды acctcom(1). Он служит для выдачи информации, которая требуется согласно указанным опциям. Вы должны только дать командному файлу acme опции в сокращенном виде, а все остальное он сделает сам. Если acme вызывается без аргументов, программа acctcom выведет по умолчанию все записи.

Команда acctcom имеет много опций. В действительности мы используем одну или две, но зато используем их часто. Двумя опциями, которые понимает acme, являются -l и -u. Когда указана опция -l, acme получает имя вашего терминала и помещает его в командную строку. Если указана опция -u, acme получает ваше пользовательское имя и тоже вставляет его в командную строку. Время от времени используются другие опции для бавления специфической информации или небольшого изменения выходного формата. Для того чтобы была возможность использовать другие опции команды acctcom, acme включает в командную строку, формируемую для fcctcom, любые дополнительные корректные опции acctcom, переданные в командной строке для acme. Таким образом, acme поддерживает базовые возможности, а кроме того позволяет вам подгонять команду под ваш вкус.

Перед тем, как начнется выполнение команды acctcom, на экран выводится расширенный вид командной строки, так что вы можете видеть командную строку, сгенерированную acme. Без этого может получиться путаница, поскольку вы не будете знать, что собирается делать программа.

ПРИМЕРЫ




Начало  Назад  Вперед