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

··$suspend $1 # Заблокировать учетную запись на время выполнения работы.

··uid="$(grep −E "^${1}:" $pwfile | cut −d: −f3)"

··if [-z $uid]; then

····echo "Error: no account $1 found in $pwfile" >&2

····exit 1

··fi

··# Удалить пользователя из файлов password и shadow.

··grep −vE "^${1}:" $pwfile > $newpwfile

··grep −vE "^${1}:" $shadow > $newshadow

··lockcmd="$(which lockfile)" # Найти приложение lockfile.

··if [! -z $lockcmd]; then # Использовать системную команду lockfile.

····eval $lockcmd −r 15 $locker

··else························# Не вышло, используем свой механизм.

····while [-e $locker]; do

······echo "waiting for the password file"; sleep 1

····done

····touch $locker············# Создать блокировку на основе файла.

··fi

··mv $newpwfile $pwfile

··mv $newshadow $shadow

rm −f $locker··············# Щелк! Снять блокировку.

··chmod 644 $pwfile

··chmod 400 $shadow

··# Теперь удалить домашний каталог и перечислить все, что осталось.

··rm −rf $homedir/$1

··echo "Files still left to remove (if any):"

··find / −uid $uid −print 2>/dev/null | sed 's/^/ /'

··echo ""

··echo "Account $1 (uid $uid) has been deleted, and their home directory "

··echo "($homedir/$1) has been removed."

··exit 0

<p>Как это работает</p>

Чтобы избежать любых изменений в учетной записи в то время, пока работает сценарий deleteuser, сразу после запуска он приостанавливает ее действие, вызывая suspenduser.

Перед изменением файла с паролями этот сценарий блокирует доступ к нему с помощью программы lockfile, если она доступна . Как вариант, для создания файла-блокировки в Linux можно также использовать утилиту flock. Если этой программы нет, сценарий использует относительно примитивный механизм блокировки, основанный на создании файла /etc/passwd.lock. Если файл-блокировка уже существует , сценарий ждет его удаления другой программой, после чего создает свой файл, выполняет необходимые операции и удаляет его по завершении .

<p>Запуск сценария</p>

Этот сценарий должен запускаться с привилегиями root (с помощью sudo) и в качестве аргумента ожидает получить имя учетной записи для удаления. В листинге 5.20 показан запуск сценария для удаления учетной записи пользователя snowy.

ВНИМАНИЕ

Действия, выполняемые сценарием, необратимы, и в ходе своей работы он удаляет много файлов, поэтому будьте осторожны во время экспериментов с ним!

<p>Результаты</p>

Листинг 5.20. Тестирование сценария deleteuser на учетной записи пользователя snowy

$ sudo deleteuser snowy

Please change the password for account snowy to something new.

Changing password for user snowy.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

Account snowy has been suspended.

Files still left to remove (if any):

·· /var/log/dogbone.avi

Account snowy (uid 502) has been deleted, and their home directory

(/home/snowy) has been removed.

Пользователь snowy попытался спрятать AVI-файл (dogbone.avi) в каталоге /var/log. Но мы благополучно нашли его — кто знает, что там может быть?

<p>Усовершенствование сценария</p>
Перейти на страницу:

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

Сценарии командной оболочки. 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.

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

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