Читаем Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание полностью

Компромиссное решение — создавать файл .locatedb отдельно для каждого пользователя. Это не самый худший вариант, потому что личные базы данных нужны только пользователям, которые действительно пользуются командой locate. После вызова система создаст файл .locatedb в домашнем каталоге пользователя, а его своевременное обновление можно переложить на задание cron, выполняющееся по ночам. Когда пользователь запустит защищенный сценарий slocate в самый первый раз, он увидит сообщение, предупреждающее о том, что он может выполнять поиск только среди общедоступных файлов. Запустив сценарий на следующий день (в зависимости от того, на какое время запланирован запуск задания cron), пользователи будут получать свои, персонализированные результаты.

<p>Код</p>

Защищенная версия locate состоит из двух сценариев: конструктора базы данных mkslocatedb (представленного в листинге 5.11), и утилиты поиска slocate (представленной в листинге 5.12).

Листинг 5.11. Сценарий mkslocatedb

··#!/bin/bash

··# mkslocatedb — создает центральную базу данных общедоступных файлов,

··#·· выполняясь с привилегиями пользователя nobody, и одновременно обходит

··#·· домашние каталоги всех пользователей в поисках··файла. slocatedb.

··#·· Если файл найден, для пользователя создается дополнительная, личная

··#·· версия базы данных поиска файлов.

··locatedb="/var/locate.db"

··slocatedb=".slocatedb"

··if ["$(id −nu)"!= "root"]; then

····echo "$0: Error: You must be root to run this command." >&2

····exit 1

··fi

··if ["$(grep '^nobody:' /etc/passwd)" = ""]; then

····echo "$0: Error: you must have an account for user 'nobody'" >&2

····echo "to create the default slocate database." >&2

····exit 1

··fi

··cd /·· # Предотвратить проблемы нехватки прав доступа после команды su

··# Сначала создать или обновить общедоступную базу данных.

··su −fm nobody −c "find / −print" > $locatedb 2>/dev/null

··echo "building default slocate database (user = nobody)"

··echo… result is $(wc −l < $locatedb) lines long.

··# Теперь обойти учетные записи пользователей и посмотреть,

··#·· у кого в домашнем каталоге имеется файл. slocatedb.

··for account in $(cut −d: −f1 /etc/passwd)

··do

····homedir="$(grep "^${account}:" /etc/passwd | cut −d: −f6)"

····if ["$homedir" = "/"]; then

······continue·· # Не создавать в корневом каталоге.

····elif [-e $homedir/$slocatedb]; then

······echo "building slocate database for user $account"

······su −m $account −c "find / −print" > $homedir/$slocatedb \

········2>/dev/null

······chmod 600 $homedir/$slocatedb

······chown $account $homedir/$slocatedb

······echo… result is $(wc −l < $homedir/$slocatedb) lines long.

····fi

··done

··exit 0

Сам сценарий slocate (в листинге 5.12) — это пользовательский интерфейс к базе данных slocate.

Листинг 5.12. Сценарий slocate, сопутствующий сценарий для mkslocatedb

#!/bin/bash

# slocate — выполняет поиск собственной, защищенной базы данных locatedb

#·· пользователя по указанному шаблону. Если база данных не найдена, это

#·· означает, что она отсутствует, тогда выводится предупреждающее сообщение

Перейти на страницу:

Все книги серии Для профессионалов

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Брендон Перри , Дейв Тейлор

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных