Добавить в корзинуПозвонить
Найти в Дзене
NOIR

Основы написания сценариев оболочки 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 Теперь нам нужно описать, что должно происходить, когда пользователь вводит тот или иной ответ: if [ "$use" = "subnet" ]; then в квадратных скобках мы использовали оператор сравнения «=» т.е. мы сравнили ответ введенный пользователем, а именно переменную u

Привет, друг. Продолжаем изучать сценарии оболочки 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
Первая часть нашего скрипта готова, мы описали что нужно делать если пользователь ввёл 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.

Итак, наш скрипт приобрел такой вид:

-2

Можем сохранить и убедиться, что всё работает как надо.

В этом уроке мы научились использовать условные операторы if, then, else при написании сценариев оболочки Bash. Как видишь в этом нет ничего сложного, всё базируется на элементарной логике. Не забывай возвращаться к нам, ведь в следующих уроках мы продолжим совершенствовать свои навыки и постепенно будем переходить ко всё более продвинутым штукам.