Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кпл.docx
Скачиваний:
1
Добавлен:
29.04.2019
Размер:
41.13 Кб
Скачать
  1. Метод решения задачи.

Slax является Linux-о подобной системой и позволяет использовать стандартные команды Linux и весь его богатый консольный функционал не только для работы, но и для настройки самой системы даже путём изменения системных файлов. В отличии от Windows-подобных систем где существуют серьёзные ограничения на изменение стандартных системных файлов, и запуск потенциально опасных для стабильности системы приложений.

Переходя непосредственно к решению поставленной задачи можно разделить задание на части:

  • Написать shell-скрипт

  • Создать приложение на языке С

  • Реализовать запуск приложения автоматически

Которые в свою очередь тоже разделяются на подзадачи, рассмотрим каждую отдельно:

4.1 Создание shell-скрипта

Командная оболочка UNIX (англ. Unix shell, часто просто «шелл» или «sh») — командный интерпретатор, используемый в операционных системах семейства UNIX, в котором пользователь может либо давать команды операционной системе по отдельности, либо запускать скрипты, состоящие из списка команд. Непосредственно для реализации бал выбран bash.

bash (от англ. Bourne again shell, каламбур «Born again» shell — «Возрождённый» shell) — усовершенствованная и модернизированная вариация командной оболочки Bourne shell. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.

Bash это командный процессор, который, как правило, работает в текстовом окне, что позволяет пользователю вводить команды вызывающие определенные действия. Bash также может читать команды из файла, который называется скриптом. Как и все Unix-оболочки, он поддерживает автодополнение регулярных выражений, названий файлов и папок, подстановку вывода результата команд, переменные, контроль за порядком выполнения, и операторы ветвления и итерации. Ключевые слова, синтаксис и другие основные особенности языка были скопированы с sh. Другие функции, например, история, были скопированы с csh и ksh. Bash является оболочкой POSIX, но с рядом расширений.

Метод реализации выбран следующий:

Как известно, в Linux-подобных системах вся информация о системе (включая ядро, процессы, и параметры конфигурации) хранится в директории /proc . необходимую информацию портах USB можно найти непосредственно в /proc/bus/usb/devices. Соответственно обратившись к этому файлу можно получить необходимую информацию, но после выполнения такой команды на экран выводится много ненужной информации(номера устройств, производители и т.д.). Так же информация выводится о всех устройствах подключенных по интерфейсу USB, а в задании необходимо определять только USB Flash-диск. Для отсеивания ненужной информации можно применить команду-фильтр grep.

grep — утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и выводит их, если вывод не отменён специальным ключом.

Поставим в параметр команды стандартное наименование драйвера устройства USB-диск: "Driver=usb-storage" таким образом можно получить только те строки где встречается данное выражение, а значит информация именно о Flash-диске. Сам алгоритм скрипта выглядит следующим образом:

  1. Получить содержимое /proc/bus/usb/devices

  2. Отфильтровать командой grep нужные строки

  3. Присвоить строки в переменную

  4. Проверить если переменная не пуста, вывести результат в консоль tty2

  5. Иначе ничего не выводить, ждать 60 секунд.

Исходный код скрипта с комментариями:

#!/bin/bash //объявляем среду выполнения

while : //вход в цикл «пока»(условие выхода отсутствует – цикл «вечный»)

do //инструкция выполнения (что именно выполнять в цикле)

sleep 60 // ждать 60 секунд

fld=$(grep "Driver=usb-storage" /proc/bus/usb/devices) //присвоить в переменную “fld” отфильтрованное по выражению "Driver=usb-storage" содержимое /proc/bus/usb/devices

if [ -n "$fld" ];then // условие если, -n значит «существует»(или не содержит NULL), пременная “fld”, тогда

cat /proc/bus/usb/devices > /dev/tty2 //Команда cat читает указанные файлы и выдает их содержимое на указанный вывод(в нашем случае консоль tty2).

fi //конец условия «если»

done //успешное завершение вложения, т.е переход в начало цикла “while”

Для создания модуля сделаем файл исполняемым, для этого выполним команду chmod с параметром +rx, что позволит запускать и изменять этот файл. Затем командой dir2lzm [каталог] [имя модуля] преобразуем его в модуль.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]