Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом Мизина Артёма Сергевича.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

2.8 Разработка специального программного обеспечения

Два vlan субинтерфейса создать не сложно, а вот если нужно создать 42, то на помощь приходит командная оболочка BASH, позволяющая автоматизировать рутинные операции. Напишем небольшую интерактивную программу, которая будет создавать конфигурационные скрипты для выбранного диапазона субинтерфейсов.

Первым делом, нам необходимы параметры, которые будут присваиваться переменным скрипта.

Весь скрипт с описанием:

#!/bin/bash

cd /etc/sysconfig/network-scripts

lsmod | grep 8021q > /dev/nul l

i f [ $? -eq 1 ] 8021q

echo “Сколько VLAN интерфейсов необходимо создать”

read answer =$(($answer+1))i in $(seq 2 $num) -a | grep vlan$i > /dev/null [ $? -eq 1 ] add eth1 $i > /dev/null vlan$i 192.168.$i.1 netmask 255.255.255.0 up ifcfg-vlan$i "Интерфейс vlan$i был создан как новый!" -e "\rVLAN=yes

\rVLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD

\rPHYSDEV=eth1

\rDEVICE=vlan$i

\rNAME=”vlan$i”

\rBOOTPROTO=none

\rNETMASK=255.255.255.0

\rTYPE=Ethernet

\rIPADDR=192.168.$i.1

\rONBOOT=yes

\rIPV6INIT=no

\rUSERCTL=no

\rPREFIX=24" > ifcfg-vlan$i (14)

else "Интерфейс VLAN vlan$i был создан ранее!"

fi

done

Выполним переход в директорию, где будут создаваться конфигурационные файлы.

Проверка загруженности модуля 8021q, если модуль не загружен, то VLAN интерфейсы не будут созданы. Если модуль не загружен, то команда lsmod | grep 8021q > /dev/null передаст значение 1 если загружен 0.

Рекурсионная обработка предыдущей команды. При полученном значении 1 выполнит подгрузку модуля, при 0 пропустит выполнение скрипта.

Информационное сообщение о количестве создаваемых интерфейсах будет напечатано на экране.

Команда read позволяет передать значение переменной answer не посредственно с клавиатуры (интерактивный режим).

Приращение на 1 к введённому значению. Так как VLAN отсчитываются с 2, соответственно при создании 10 VLAN, последний VLAN будет иметь имя vlan11.

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

С помощью цикла скрипт проверит на существование VLAN интерфейсов начиная с vlan2 до vlanN. 1 - не существует, 0 - существует.

- Рекурсионная обработка предыдущей команды, при 1 - создаст VLAN интерфейс.

, 11, - Команды создания субинтерфейса и присвоения этому интерфейсу IP адреса.

- Создание пустого конфигурационного файла.

- Вывод информационного сообщения о создании интерфейса.

- Помещение конфигурации в пустой файл.

- Рекурсивный переход, при условии, что интерфейс существовал перед созданием(защита от дублирования субинтерфейса).

- Информационное сообщение, о том что интерфейс с указанным номером не нуждается в создании, так как он был создан ранее.

В результате выполнения скрипта создадутся vlan интерфейсы в количестве указанных в параметре $answer, создадутся конфигурационные файлы для этих интерфейсов.

Для добавления модуля 8021q в автозагрузку системы создадим управляющий скрипт следующего содержания:

lsmod | grep 8021q > /dev/null

if [ $? -eq 1 ]8021q0

И поместим эту запись в конец тектового файла /etc/rc.d/rc.local отвечающего за автозагрузку. Данный скрипт проверит таблицу загруженных модулей, сопоставит с входящим условием фильтрации по имени, если совпадение будет найдено, программа передаст рекурсионной обработке IF значение 0, если нет, то значение 1. При значении 1 произойдёт подгрузка модуля в ядро, при значении 0 выход.