В результате выполнения этого задания вы научитесь:
- Контролировать передачу пользователем параметров скрипту;
- Проверять входные данные;
- Проверять, что скрипт запущен с повышенными привилегиями.
- Установлена операционная система Ubuntu на виртуальную машину или локально и имеется доступ к терминалу (удаленный или из графической оболочки)
- Установлена утилита arping (sudo apt install -y arping)
- Просмотрены коды скриптов, расположенные по ссылке
- Домашнее задание выполните в Google Docs и отправьте на проверку ссылку на ваш документ в личном кабинете.
- В названии файла введите корректное название лекции и вашу фамилию и имя.
- Зайдите в “Настройки доступа” и выберите доступ “Просматривать могут все в Интернете, у кого есть ссылка”. Ссылка на инструкцию Как предоставить доступ к файлам и папкам на Google Диске
- Скопируйте текст задания в свой Google Документ.
- Исправьте приведенный bash-скрипт.
- Для проверки необходимо прикрепить ссылку на ваш Google документ, в котором прописан код скрипта и скриншоты, демонстрирующие различные сценарии работы данного скрипта.
- Для проверки домашнего задания преподавателем отправьте в личном кабинете.
- Любые вопросы по решению задач задавайте в чате учебной группы
Дан скрипт:
#!/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
- не забывайте проверять вводимые пользователем параметры с помощью регулярных выражений и знака
=~
в условных операторах - проверьте, что скрипт запускается с повышенными привилегиями и сообщите пользователю, если скрипт запускается без них
Эти задания дополнительные (не обязательные к выполнению) и никак не повлияют на получение вами зачета по этому домашнему заданию. Вы можете их выполнить, если хотите глубже и/или шире разобраться в материале.
Измените скрипт из Задания 1 так, чтобы:
- единственным параметром для ввода остался сетевой интерфейс;
- определите подсеть и маску с помощью утилиты
ip a
илиifconfig
- сканируйте с помощью arping адреса только в этой подсети
- не забывайте проверять в начале работы скрипта, что введенный интерфейс существует
- воспользуйтесь shellcheck для улучшения качества своего кода
- Код скриптов оформлен по правилам оформления кода на Bash
- Код скриптов размещен в отдельном sh-файле на вашем Google диске
- В личном кабинете отправлена ссылка на ваш Google документ, в котором прикреплена ссылка на ваш sh-файл с кодом скриптов и скриншоты, демонстрирующие корректную работу скриптов
- В документе и sh-файле настроены права доступа “Просматривать могут все в Интернете, у кого есть ссылка”
- Название документа содержит название лекции и ваши фамилию и имя
Зачет - выполнены все задания, приложен скрипт, приложены соответствующие скриншоты, в выполненных заданиях нет противоречий и нарушения логики
На доработку - задание выполнено частично или не выполнено, в логике выполнения заданий есть противоречия, скрипты не работают или работают не во всех случаях.