Основы написания сценариев оболочки BASH. Часть 2: Условные операторы
Привет, друг. Продолжаем изучать сценарии оболочки BASH. Сегодня разберемся как использовать условные операторы if, then, else.
В прошлом уроке мы написали простенький скрипт для анализа подсети утилитой nmap и вывода отфильтрованных результатов в отдельный файл. Прошлый урок здесь: КЛАЦ
Теперь давай возьмём наш скрипт:
#!/bin/bash
echo "Enter subnet:"
read subnet
echo "Enter port:"
read port
nmap -p $port -sT $subnet -oG res
cat res |grep open >result
cat result
и разнообразим его функционал, используя условные операторы. Для понимания логики их применения, мы предоставим пользователю возможность выбрать, как использовать nmap.
И начнем мы с вопроса пользователю, а ответ, как и ранее, поместим в переменную:
echo "What do you want to scan: subnet/ip"
read use
Условные операторы Bash
Теперь нам нужно описать, что должно происходить, когда пользователь вводит тот или иной ответ:
if [ "$use" = "subnet" ]; then
в квадратных скобках мы использовали оператор сравнения «=» т.е. мы сравнили ответ введенный пользователем, а именно переменную use со словом subnet и дали инструкцию: (if) если в переменной use записано subnet, (then) тогда выполнить код после then.
ПОМНИ:интерпретатор чувствителен к пробелам, если пропустишь пробелы — будет выводить ошибку
Теперь добавим наш скрипт сканирования подсети:
Первая часть нашего скрипта готова, мы описали что нужно делать если пользователь ввёл subnet
Теперь нужно описать, что делать если пользователь введет ip. И нам на помощь приходит оператор else. С точки зрения интерпретатора, это работает так: если значение if — истинно (true), выполнить then, если значение if — лож (false), то выполнить else. Соответственно после введения оператора else мы описываем, что должно происходить во втором случае, если пользователь введёт ip:
else
echo "Enter IP:"
read IP
nmap -PE $IP -oN scan
cat scan
пошагово это можно описать так: мы попросили пользователя ввести IP который он хотел бы сканировать, передали введенные данные в переменную IP и запустили утилиту nmap с параметром PE (пингование с использованием ICMP эхо запросов), передав ей данные из переменной IP, а результаты вывели(-oN) в файл scan, после чего вывели (cat) содержимое файла scan на экран.
Если мы использовали условные операторы в своем скрипте, то завершить их использование мы должны строкой fi.
Итак, наш скрипт приобрел такой вид:
Можем сохранить и убедиться, что всё работает как надо.
В этом уроке мы научились использовать условные операторы if, then, else при написании сценариев оболочки Bash. Как видишь в этом нет ничего сложного, всё базируется на элементарной логике. Не забывай возвращаться к нам, ведь в следующих уроках мы продолжим совершенствовать свои навыки и постепенно будем переходить ко всё более продвинутым штукам.
Твой Pulse.