
С чего начинается рабочий день системного администратора? У меня - с чтения почты о результатах самодиагностики подотчетных систем. Если системы функционируют в штатном режиме (не произошло никаких изменений в конфигурационных файлах, регулярные тесты выполнились успешно и их вывод соответствует ожидаемому, результат анализа log-файлов не выявил ничего такого, о чём бы следовало известить), то мой почтовый ящик пуст, а значит, день начался удачно (с большой вероятностью

. Эта уверенность основана на доверии к работе самописного комплекта скриптов для проверки состояния компьютеров под управлением Solaris™.
Собственно говоря, это один главный shell-скрипт и набор функциональных, простота написания которых обеспечивается их выполнением непосредственно базовым скриптом, реализующим основные действия по анализу и сохранению результатов работы последних.
Пример функционального скрипта с типовыми административными задачами:
# 1. Анализ log-файла
Rss - Сообщения в /var/adm/messages за вчерашний день
sed "/^`TZ=GMT+24 date '+%b %e'`/!d" /var/adm/messages
# 2. Сравнение текущего состояния системы с предыдущим
Rss tmp/ifconfig = 'diff -t' Изменения параметров сетевых интерфейсов
ifconfig -a
# 3. Проверка файлов и обновление их резервных копий при модификации
Rss /etc
Rss /etc/hosts
Rss /etc/inet/hosts
Rss /etc/hostname.*
Rss /etc/mail/ %
Rss /etc/system ~ '#*' = "diff -tu" Инициализация ядра
Rss /etc/logadm.conf ~ # + cat_logadm = 'diff -U 0'
cat_logadm() { sed "s/ -P '[^']*' / /"; }
Пояснения к примеру:
1. Если sed что-то найдет, то весь его вывод включить в отчет с соответствующим заголовком. Иначе отчет не формировать.
2. Если diff -t покажет отличия между предыдущим выводом ifconfig -a сохраненном в файле tmp/ifconfig и текущим, то обновить содержимое этого файла, а весь вывод diff -t включить в отчет с указанным заголовком. Иначе отчет не формировать.
3. Регулярные файлы проверить на отличия относительно backup-копий и не пустые результаты сравнения вывести отдельными отчетами. Если не указан текст заголовка, то использовать умолчательный. Измененные файлы сохранить. При этом:
- обрабатывать все path попадающие под шаблон /etc/hostname.*;
- рекурсивно обойти иерархию каталогов /etc/mail и для регулярных файлов подсчитать MD5-сумму;
- если файлы /etc/system и /etc/logadm.conf состоят только из незначащих строк, то не выполнять их сохранение;
- файл /etc/logadm.conf перед проверкой прогнать через фильтр cat_logadm;
- файл /etc/system сравнивать с сохраненным командой diff -tu;
- файл /etc/logadm.conf проверять с помощью diff -U 0.
После завершения выполнения функционального скрипта, сохранить в порядке проверки, для всех существующих файлов, каталогов и символических ссылок их атрибуты (режим доступа, владелец, группа, размер; для символических ссылок вместо режима доступа - targets; для файлов, если вычислены, еще и MD5-суммы) в файле сценария восстановления. Сравнить его с предыдущей сохраненной копией, а имеющиеся различия вывести отдельным отчетом.
Использование:
1. Выполнить сценарий Test, отчеты отправлять почтой:
$ Rss -s Test Пример использования Rss
2. Выполнить восстановление изменных данных для path, совпадающих с шаблоном */hosts, руководствуясь информацией из файла Test.Rss, сформированного предыдущей командой:
$ Rss -r -R / -s Test.Rss "*/hosts"
В прилагаемом дистрибутиве присутствуют:
основной shell-скрипт Rss и документация на него;
примеры функциональных скриптов самодиагностики (тестирование более 40-а параметров системы, анализ стандартных log-файлов, контроль основных системных файлов, каталогов и символических ссылок, сохранение конфигурации с помощью системы контроля версий CVS, получение технического паспорта системы и т.п.);
* краткие замечания по использованию пакета и прочие файлы необходимые для его установки и работы.
Дистрибутив Rss-1.13.tar.gz