Библиотека сайта rus-linux.net
Руководство по Bash для начинающих | ||
---|---|---|
Назад | Глава 8: Пишем интерактивные скрипты | Вперед |
Подводим итог
В этой главе мы узнали, как предоставлять пользователю комментарии и как выдавать ему приглашение на ввод данных. Обычно это делается с помощью комбинации команд echo/read. Мы также обсудили, как с помощью дескрипторов файлов и перенаправлений можно использовать файлы для ввода и вывода данных, и как это можно совместить с получением данных, вводимых пользователем.
Мы подчеркнули важность предоставления в наших скриптах сообщений для пользователей. И, как во всех других ситуациях, лучше дать слишком много информации, чем ее окажется мало. Для создания списков, в которых будут храниться варианты, выбираемые пользователями можно использовать встраиваемые документы (Here documents). Этой конструкцией также можно пользоваться в случае, когда скрипт выполняется в фоновом режиме без вмешательства пользователя.
Упражнения
В этих упражнениях представлены практические примеры приложений, использующих конструкции, рассмотренные в данной главе. Когда вы будете писать скрипты, вы можете проверять их в тестовом директории, в котором не должно быть слишком много данных. Пишите скрипты по частям, проверяйте каждый фрагмент кода, не пишите сразу весь скрипт целиком.
- Напишите скрипт, который спрашивает у пользователя его возраст. Если возраст равен или больше 16, выдайте сообщение о том, что ему разрешено употреблять алкоголь. Если возраст пользователя меньше 16, выдайте сообщение о том, сколько лет ему надо ждать прежде, чем ему юридически будет разрешено пить.
В качестве дополнения рассчитайте, сколько по статистике уже выпил пива пользователь, которому больше 18 лет (из расчета - 100 литров / год), и выдайте пользователю эту информацию.
- Напишите скрипт, у которого в качестве аргумента указывается один файл. Используйте методику встраиваемых документов (here document) и предложите пользователю выбрать один из нескольких вариантов сжатия файлов. В качестве вариантов выбора могут быть gzip, bzip2, compress и zip.
- Напишите скрипт, который автоматизирует использование команды tar так, чтобы человек, исполняющий скрипт, когда он делает резервную копию своего домашнего директория, всегда при создании резервной копии использовал правильные параметры (
cvp
) и правильный директорий (/var/backups
). Реализуйте следующие возможности:- Проверка количества аргументов. Скрипт должен работать без аргументов. Если присутствуют какие-нибудь аргументы, выдайте сообщение о правиле использовании скрипта и выйдите из него.
- Определение, достаточно ли в директории
backups
свободного пространства для хранения резервной копии. - Запрос пользователя о том, нужно ли полное или инкрементное резервное копирование. Если у пользователя до сих пор нет полной резервной копии, выдача сообщение о том, что будет сделана полная резервная копия. В случае инкрементного резервного копирования, выполнение такого копирования только в случае, если после полной резервной копии прошло не больше одной недели.
- Сжатие резервной копии с помощью любого инструмент сжатия. Информирование пользователя о том, что скрипт выполняет сжатие, поскольку для этого может потребоваться некоторое время, в течение которого пользователь может начать беспокоиться, если на экран не будет выдаваться никаких сообщений.
- Выдача сообщения, информирующего пользователя о размере сжатой резервной копии.
Смотрите дополнительную информацию с помощью команды info tar или в книге "Introduction to Linux" ("Введение в Linux") в главе 9 "Preparing your data" ("Подготовка ваших данных").
- Напишите скрипт, который будет называться
simple-useradd.sh
и будет добавлять в систему локального пользователя. Этот скрипт должен делать следующее:- Использовать только один аргумент, либо прекратить работу после выдачи сообщения об использовании.
- Проверять
/etc/passwd
и определять первый свободный идентификатор пользователя ID. Выдавать сообщение, содержащее этот ID. - Создавать личную группу для этого пользователя, проверяя файл
/etc/group
. Выдавать сообщение, содержащее идентификатор группы. - Получать информацию от оператора: комментарий, описывающий этого пользователя, список командных оболочек, допустимых для использования (проверьте возможность использования, в противном случае выдайте сообщение о правиле использования скрипта и выйдите из него), дату истечения срока действия учетной записи этого пользователя, дополнительные группы, в которые новый пользователь должен быть включен.
- Имея полученную информацию, добавлять строку в
/etc/passwd
,/etc/group
и/etc/shadow
; создавать домашний директорий пользователя (с надлежащими правами доступа!); добавлять пользователя в нужные второстепенные группы. - Устанавливать для этого пользователя в качестве пароля, используемого по умолчанию, какую-нибудь известную строку.
- Перепишите скрипт из раздела "Проверка существования файла", так чтобы он читал входные данные , получаемые от пользователя, а не брал их из первого аргумента.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Получение данных, вводимых пользователем | Глава 9 |