Skip to content

Latest commit

 

History

History
99 lines (70 loc) · 6.91 KB

5-05.md

File metadata and controls

99 lines (70 loc) · 6.91 KB

Домашнее задание к занятию "Разбор скриптов и и их написание"

Цель задания

В результате выполнения этого задания вы научитесь:

  1. Контролировать передачу пользователем параметров скрипту;
  2. Проверять входные данные;
  3. Проверять, что скрипт запущен с повышенными привилегиями.

Чеклист готовности к домашнему заданию

  1. Установлена операционная система Ubuntu на виртуальную машину или локально и имеется доступ к терминалу (удаленный или из графической оболочки)
  2. Установлена утилита arping (sudo apt install -y arping)
  3. Просмотрены коды скриптов, расположенные по ссылке

Инструкция к заданию

  1. Домашнее задание выполните в Google Docs и отправьте на проверку ссылку на ваш документ в личном кабинете.
  2. В названии файла введите корректное название лекции и вашу фамилию и имя.
  3. Зайдите в “Настройки доступа” и выберите доступ “Просматривать могут все в Интернете, у кого есть ссылка”. Ссылка на инструкцию Как предоставить доступ к файлам и папкам на Google Диске
  4. Скопируйте текст задания в свой Google Документ.
  5. Исправьте приведенный bash-скрипт.
  6. Для проверки необходимо прикрепить ссылку на ваш Google документ, в котором прописан код скрипта и скриншоты, демонстрирующие различные сценарии работы данного скрипта.
  7. Для проверки домашнего задания преподавателем отправьте в личном кабинете.
  8. Любые вопросы по решению задач задавайте в чате учебной группы

Задание 1.

Дан скрипт:

#!/bin/bash
PREFIX="${1:-NOT_SET}"
INTERFACE="$2"

[[ "$PREFIX" = "NOT_SET" ]] && { echo "\$PREFIX must be passed as first positional argument"; exit 1; }
if [[ -z "$INTERFACE" ]]; then
    echo "\$INTERFACE must be passed as second positional argument"
    exit 1
fi

for SUBNET in {1..255}
do
	for HOST in {1..255}
	do
		echo "[*] IP : ${PREFIX}.${SUBNET}.${HOST}"
		arping -c 3 -i "$INTERFACE" "${PREFIX}.${SUBNET}.${HOST}" 2> /dev/null
	done
done

Измените скрипт так, чтобы:

  • для ввода пользователем были доступны все параметры. Помимо существующих PREFIX и INTERFACE, сделайте возможность задавать пользователю SUBNET и HOST;
  • скрипт должен работать корректно в случае передачи туда только PREFIX и INTERFACE
  • скрипт должен сканировать только одну подсеть, если переданы параметры PREFIX, INTERFACE и SUBNET
  • скрипт должен сканировать только один IP-адрес, если переданы PREFIX, INTERFACE, SUBNET и HOST
  • не забывайте проверять вводимые пользователем параметры с помощью регулярных выражений и знака =~ в условных операторах
  • проверьте, что скрипт запускается с повышенными привилегиями и сообщите пользователю, если скрипт запускается без них

Дополнительные задания (со звездочкой*)

Эти задания дополнительные (не обязательные к выполнению) и никак не повлияют на получение вами зачета по этому домашнему заданию. Вы можете их выполнить, если хотите глубже и/или шире разобраться в материале.

Задание 2.

Измените скрипт из Задания 1 так, чтобы:

  • единственным параметром для ввода остался сетевой интерфейс;
  • определите подсеть и маску с помощью утилиты ip a или ifconfig
  • сканируйте с помощью arping адреса только в этой подсети
  • не забывайте проверять в начале работы скрипта, что введенный интерфейс существует
  • воспользуйтесь shellcheck для улучшения качества своего кода

Правила приема работы

  • Код скриптов оформлен по правилам оформления кода на Bash
  • Код скриптов размещен в отдельном sh-файле на вашем Google диске
  • В личном кабинете отправлена ссылка на ваш Google документ, в котором прикреплена ссылка на ваш sh-файл с кодом скриптов и скриншоты, демонстрирующие корректную работу скриптов
  • В документе и sh-файле настроены права доступа “Просматривать могут все в Интернете, у кого есть ссылка”
  • Название документа содержит название лекции и ваши фамилию и имя

Критерии оценки

Зачет - выполнены все задания, приложен скрипт, приложены соответствующие скриншоты, в выполненных заданиях нет противоречий и нарушения логики

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