Задача
Дан скрипт на Bash, который сканирует IP-адреса формата xxx.xxx.xxx.xxx (маска 24). Сейчас он использует только префикс (первые два октета) и сетевой интерфейс, запуская полный перебор подсетей от 1 до 255 и хостов от 1 до 255. Необходимо расширить скрипт, чтобы пользователь мог задавать все октеты IP-адреса (prefix, subnet, HOST), сохранив при этом сценарии с разной глубиной сканирования, и обеспечить надёжную проверку ввода и прав.
Требования
Доработка скрипта
- Сделать доступными для ввод пользователя все параметры IPv4: prefix (обязательный), interface (обязательный), subnet и HOST (опциональные).
- Скрипт должен корректно обрабатывать три сценария:
- Только prefix + interface: сканируется вся подсеть (subnet от 1 до 255, HOST от 1 до 255).
- prefix + interface + subnet: сканируются только все хосты заданной подсети (HOST от 1 до 255).
- prefix + interface + subnet + HOST: сканируется только один указанный IP-адрес.
- Обязательно использовать проверку ввода с помощью регулярных выражений через оператор =~ (например, для проверки формата чисел или IP).
- Добавить проверку запуска с повышенными привилегиями (root/sudo). Если скрипт запущен от обычного пользователя - выводить сообщение и завершиться (или продолжить с сообщением).
Примечания
- Вся работа ведется в среде Linux.
- Предполагается, что subnet и HOST передаются как третий и четвёртый аргументы (если заданы).
- Оформление вывода и exit кодов менять не нужно, достаточно реализовать логику.