Работа с учетными записями пользователей



 

По заданному имени входа пользователя выдать, в зависимости от указанного ключа, либо его полное имя, либо идентификатор пользователя, либо идентификатор группы пользователя. Допускается задание сразу нескольких ключей.

Пусть скрипт носит имя 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!