Работа с учетными записями пользователей
По заданному имени входа пользователя выдать, в зависимости от указанного ключа, либо его полное имя, либо идентификатор пользователя, либо идентификатор группы пользователя. Допускается задание сразу нескольких ключей.
Пусть скрипт носит имя userinfo, а допустимые ключи – n (полное имя), u (идентификатор пользователя) и g (идентификатор группы). Синтаксис вызова:
userinfo [-nug] имя_входа
Ниже приведен текст скрипта.
#!/bin/bash
info=
While getopts nug option ; do
case $option in
n) info=$info” `grep '^'$2 /etc/passwd | cut –f 5 –d :`”
u) info=$info” `grep '^'$2 /etc/passwd | cut –f 3 –d :`”
g) info=$info” `grep '^'$2 /etc/passwd | cut –f 4 –d :`”
*) echo Bad option: $option
Esac
Done
echo $info
Требуемая информация выбирается из системного файла /etc/passwd с помощью команды grep, при этом искомой строкой является имя входа ($2). Символ ^ перед именем заставляет искать имя только в начале строки. Этим гарантируется невозможность ложного сравнения в случае, когда имя пользователя случайно совпадает с частью какой-либо совсем другой строки файла passwd.
Используется вызов конвейера в обратных апострофах, чтобы собрать стандартный вывод в переменной info. При вырезании нужного поля из строки файла passwd учитывается, что разделителем полей в этом файле является двоеточие.
Приведенное решение не идеально. В случае нескольких ключей команда grep будет вызываться несколько раз ради поиска одной и той же строки. Лучше было бы получить строку один раз, запомнить ее в переменной, а затем только вырезать из этой переменной нужные подстроки. Это можно сделать, либо используя конструкцию «документ здесь» в качестве стандартного ввода команды cut, либо используя для выделения подстроки из переменной команду expr, которая не рассматривалась в данном пособии.
|
|
Практическая часть
Порядок выполнения работы:
По номеру варианта определить номера задач, для которых разработать shell – программы. Привести в отчете код и тестирование программы с различными наборами данных.
Номер варианта | Номера задач |
1. | 1,2,9,16,17 |
2. | 1,3,8,15,18 |
3. | 1,4,11,14,21 |
4. | 1,5,7,13,20 |
5. | 1,6,10,12,19 |
6. | 1,2,11,13,21 |
7. | 1,4,9,12,19 |
8. | 1,5,10,15,20 |
9. | 1,3,7,16,18 |
10. | 1,6,8,14,17 |
11. | 1,2,10,14,18 |
12. | 1,3,11,13,21 |
13. | 1,4,8,16,20 |
14. | 1,5,9,15,19 |
15. | 1,6,7,12,17 |
Задачи
1. Вывод на экран списка параметров командной строки с указанием номера каждого параметра. |
2. Формирование файла со списком файлов в домашнем каталоге, вывод на экран этого списка в алфавитном порядке и общего количества файлов. |
3. Формирование файла со списком файлов в домашнем каталоге, вывод на экран этого списка в порядке возрастания времени создания файла и общего количества файлов. |
4. Формирование файла со списком файлов в домашнем каталоге, вывод на экран этого списка в порядке возрастания времени создания файла и общего количества файлов. |
5. Формирование файла со списком файлов в домашнем каталоге, вывод на экран этого списка в порядке убывания времени обращения к файлу и общего количества файлов. |
6. Формирование файла со списком файлов в домашнем каталоге, вывод на экран этого списка в порядке возрастания времени изменения файла и общего количества файлов. |
7. Запрос и ввод имени каталога, переход в этот каталог, формирование файла с листингом каталога и возвращение в исходный каталог. |
8. Запрос и ввод имени пользователя, сравнение с текущим логическим именем пользователя и вывод сообщения: верно/неверно. |
9. Запрос и ввод числового идентификатора пользователя, сравнение с текущим идентификатором пользователя и вывод сообщения: верно/неверно. |
10. Запрос и ввод имени файла в текущем каталоге и количества дней. Вывод сообщения о файле: обновлялся/не обновлялся. |
11. Запрос и ввод имени файла (задается полный путь) и его типа, сравнение с действительным типом файла и вывод сообщения: совпадает/не совпадает. |
12. Циклическое чтение системного времени и выполнение очистки экрана в заданный момент. |
13. Циклическое чтение системного времени и переход в корневой каталог в заданный момент. |
14. Циклический просмотр списка файлов и выдача сообщения при появлении заданного имени в списке. |
15. Циклический просмотр списка каталогов и выдача сообщения при появлении заданного имени в списке. |
16. Циклическое чтение системного времени и в заданный момент создание каталога. |
17. Для каждого из файлов, перечисленных в списке параметров, создать отдельный подкаталог своего домашнего каталога и переместить туда файл. В случае, если нельзя выполнить перемещение (нельзя удалить файл), запрашивать пользователя, выполнять ли копирование или пропустить файл. Имена подкаталогов строить путем добавления к имени домашнего каталога чисел 1, 2, 3 и т.д. |
18. Создать вручную «телефонный справочник», состоящий из нескольких записей, содержащих 3 поля: фамилия, адрес, номер телефона. Поля записи разделять знаком табуляции. Составить скрипт, который по заданной фамилии или адресу, или номеру телефона (в зависимости от указанного ключа) выдает значения двух других полей соответствующей записи. |
19. Провести копирование из одного каталога (источника) в другой каталог (приемник) всех файлов, имена которых удовлетворяют заданному шаблону. В зависимости от заданного ключа, запрашивать подтверждение копирования либо для каждого файла, либо только в случае замены существующего файла, либо никогда. |
20. Выполнить в диалоге настройку поиска файла: запросить и ввести шаблон имени, начальный каталог поиска, тип файла, число дней после изменения файла или после обращения к нему. Выполнить поиск и вывести имена найденных файлов. |
21. Найти в указанном каталоге все файлы, содержащие заданную строку. Для каждого найденного файла запросить действие, которое необходимо выполнить: удалить файл, запретить доступ к нему прочих пользователей или оставить, как есть. |
|
|
|
|
|
|
Контрольные вопросы
1. Какие функции выполняет командный интерпретатор Shell?
2. Какое назначение имеют shell - файлы?
3. Как создать shell - файл и сделать его выполняемым?
4. Какие типы переменных используются в shell - файлах?
5. В чем заключается анализ цепочки символов?
6. Какие встроенные команды используются в shell - файлах?
7. Как производится управление программами?
8. Назовите операторы создания циклов.
9. Как задаются и выполняются простые и сложные команды?
Дата добавления: 2018-04-05; просмотров: 861; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!