Переезд

This commit is contained in:
Magnus Root 2025-07-30 15:34:21 +03:00
commit 78c7beb99e
55 changed files with 1194 additions and 0 deletions

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 1
Выберите коммутатор:
=============================
1. 10.30.0.1 swpl1-core Cisco WS-C6509-E
2. 10.30.0.2 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.3 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 2
Выберите коммутатор:
=============================
1. 10.30.0.4 swpl1-core Cisco WS-C6509-E
2. 10.30.0.5 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.6 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,6 @@
Площадка 3
Выберите коммутатор:
=============================
1. 10.30.0.7 swpl1-core Cisco WS-C6509-E
2. 10.30.0.8 swpl1-a1 Cisco WS-C2960S-48TS-L
3. 10.30.0.9 swpl1-a2 Cisco WS-C2960S-48TS-L

View file

@ -0,0 +1,28 @@
#!/bin/bash
selected_segment_=$(echo "$sort_list_segments_" | sed -n "${segment_}p")
#Считываются папки, в которых содержатся файлы с IP-адресами коммутаторов и выводятся списком, обозначая сегменты оборудования.
list_lpu_="$(ls "$path_to_script/Deus_networkus/Lists_of_switches/$selected_segment_/")"
#Сортируем список в порядке возрастания
sort_list_lpu_=$(echo -e "$list_lpu_" | sort -n)
#Выводится список ЛПУ, отсортированный по числам
echo "$sort_list_lpu_"
echo "============================="
read lpu_
if [[ -z "$lpu_" ]]; then
continue
fi
selected_lpu_=$(echo "$sort_list_lpu_" | sed -n "${lpu_}p")
#Считываются файлы, соответствующие местам установки, с IP-адресами оборудования
list_places_="$(ls "$path_to_script/Deus_networkus/Lists_of_switches/$selected_segment_/$selected_lpu_/")"
#Сортируем список в порядке возрастания
sort_list_places_=$(echo -e "$list_places_" | sort -n)
echo "$sort_list_places_"
echo "============================="
read place_
if [[ -z "$place_" ]]; then
continue
fi
selected_place_=$(echo "$sort_list_places_" | sed -n "${place_}p")
list_switches_=$(ls "$path_to_script/Deus_networkus/Lists_of_switches/$selected_segment_/$selected_lpu_/$selected_place_")
export list_switches_

474
Modules/commands.sh Normal file
View file

@ -0,0 +1,474 @@
#!/bin/bash
cat << EOF
+-------------------------------------------------------------------------------+
| Модуль |
| для массовой рассылки списка команд |
+-------------------------------------------------------------------------------+
EOF
while : #Запускается основной цикл
do
echo "Добро пожаловать в модуль для управления оборудованием"
echo "========================="
echo "Введите имя пользователя:"
read user_
path_to_script=$1
path_to_results= #Введите путь до папки, где хранится вывод данных
#Скрыть ввод пароля
stty_orig=$(stty -g)
stty -echo
read -p "Введите пароль: " pass_
#Возврат нормального ввода
stty "$stty_orig"
#Функция для создания бэкапов
function lets_go_backup {
#Адреса из массива передаются в переменную
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
echo -e "\033[0;32mПодключение к $ip_\033[0m"
sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$ip_ "sh run" > "$path_to_results/Данные со скрипта/Backups/$ip_.config.txt"
echo -e "\033[0;32mОтключение от $ip_\033[0m"
#Поиск названия оборудования
name_=$(cat " $path_to_results/Данные со скрипта/Backups/$ip_.config.txt" | grep "hostname")
name_words=($name_)
#Переименование выходного файла
mv "$path_to_results/Данные со скрипта/Backups/$ip_.config.txt" "$path_to_results/Данные со скрипта/Backups/${name_words[1]}.txt"
done
}
#Функция для сохранения конфигурации Cisco, Eltex, Natex
function lets_go_save_cisco_eltex_natex {
echo -e "\033[0;32mПодключение к $ip_\033[0m"
sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$ip_ "write memory"
echo -e "\033[0;32mОтключение от $ip_\033[0m"
}
#Функция для сохранения конфигурации Arlan
function lets_go_save_arlan {
echo -e "\033[0;32mПодключение к $ip_\033[0m"
sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$ip_ "copy running-config startup-config"
echo -e "\033[0;32mОтключение от $ip_\033[0m"
}
#Функция для передачи команд на коммутаторы
function lets_go_command {
#Команды из списка команд передаются по SSH
echo -e "\033[0;32mПодключение к $ip_\033[0m"
sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$ip_ < "$1/Deus_networkus/instructions_.txt"
echo -e "\033[0;32mОтключение от $ip_\033[0m"
}
#Создаём список для IP-адресов
ips_=()
#Создаём переменные для ведоров
cisco_list=()
eltex_list=()
natex_list=()
arlan_list=()
#Значение переменной считывается и выбирается соответствующее ему действие
echo " "
echo "Выберите действие, которое хотите сделать."
echo "1. Сделать бэкап коммутатора на свой ПК."
echo "2. Сохранить конфигурацию коммутатора."
echo "3. Передать команды на коммутатор."
read command_
#Цикл для выбора объектов для бэкапа
if [ $command_ == "1" ]; then
echo "IP-адреса из своего списка или из готовых?"
echo "1. Свой"
echo "2. Готовый"
read list_
if [ $list_ == "1" ]; then
echo "Список уже готов или Вы хотите создать его прямо сейчас?"
echo "1. Готов"
echo "2. Сделаю сейчас"
read ready_
if [ $ready_ == "1" ]; then
#Передача списка адресов в переменную
ip_="$1/Deus_networkus/ip_.txt"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_"
lets_go_backup
fi
if [ $ready_ == "2" ]; then
#Создаём переменную, в которую сохраним путь к файлу с IP-адресами
output_file="$1/Deus_networkus/ip_.txt"
#Очистим файл
> "$output_file"
echo "Введите IP-адреса. Для завершения используйте Ctrl+D"
#Считываем данные и передаём их в файл
while read -p "IP адрес: " ip_address; do
echo "$ip_address" >> "$output_file"
done
echo "Ввод завершён. IP-адреса сохранены."
#Передача списка адресов в переменную
ip_="$1/Deus_networkus/ip_.txt"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_"
lets_go_backup
fi
fi
if [ $list_ == "2" ]; then
echo " "
echo "Какое оборудование Вам нужно? "
echo "============================="
#Считываются папки, в которых содержатся папки с площадками и выводятся списком, обозначая сегменты оборудования.
list_segments_="$(ls "$1/Deus_networkus/Lists_of_switches/")"
#Сортируем список в порядке возрастания
sort_list_segments_=$(echo -e "$list_segments_" | sort -n)
#Выводится список сегментов, отсортированный по числам
echo "$sort_list_segments_"
#Выбирается сегмент
read segment_
#Запускается скрипт для вывода списка оборудования из папок
source "$path_to_script/Deus_networkus/Modules/choose_your_equipments.sh"
#Получаем строки из файла и находим IP-адреса
ips_+=$(grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" "$list_switches_")
#Передаём адреса в файл и в массив. Потом это нужно упростить и сделать напрямую, без файла.
echo "$ips_" > "$1/Deus_networkus/ip_.txt"
mapfile -t ips_ < "$1/Deus_networkus/ip_.txt"
lets_go_backup
fi
fi
if [ $command_ == "2" ]; then
echo "IP-адреса из своего списка или из готовых?"
echo "1. Свой"
echo "2. Готовый"
read list_
if [ $list_ == "1" ]; then
#Запрос вендора
echo "Выберите вендора:"
echo "1. Cisco, Eltex, Natex"
echo "2. Arlan"
read vendor_
echo "Список уже готов или Вы хотите создать его прямо сейчас?"
echo "1. Готов"
echo "2. Сделаю сейчас"
read ready_
if [ $ready_ == "1" ]; then
#Передача списка адресов в переменную
ip_list="$1/Deus_networkus/ip_.txt"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_list"
#Адреса из массива передаются в переменную и согласно вендора запускается необходимая функция
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
if [ $vendor_ == "1" ]; then
lets_go_save_cisco_eltex_natex
sleep 1
elif [ $vendor_ == "2" ]; then
lets_go_save_arlan
sleep 1
fi
done
fi
if [ $ready_ == "2" ]; then
#Создаём переменную, в которую сохраним путь к файлу с IP-адресами
output_file="$1/Deus_networkus/ip_.txt"
#Очистим файл
> "$output_file"
echo "Введите IP-адреса. Для завершения используйте Ctrl+D"
#Считываем данные и передаём их в файл
while read -p "IP адрес: " ip_address; do
echo "$ip_address" >> "$output_file"
done
echo "Ввод завершён. IP-адреса сохранены."
#Передача списка адресов в переменную
ip_list="$1/Deus_networkus/ip_.txt"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_list"
#Адреса из массива передаются в переменную и согласно вендора запускается необходимая функция
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
if [ $vendor_ == "1" ]; then
lets_go_save_cisco_eltex_natex
sleep 1
elif [ $vendor_ == "2" ]; then
lets_go_save_arlan
sleep 1
fi
done
fi
fi
if [ $list_ == "2" ]; then
echo " "
echo "Какое оборудование Вам нужно? "
echo "============================="
#Считываются папки, в которых содержатся папки с площадками и выводятся списком, обозначая сегменты оборудования.
list_segments_="$(ls "$1/Deus_networkus/Lists_of_switches/")"
#Сортируем список в порядке возрастания
sort_list_segments_=$(echo -e "$list_segments_" | sort -n)
#Выводится список сегментов, отсортированный по числам
echo "$sort_list_segments_"
#Выбирается сегмент
read segment_
#Запускается скрипт для вывода списка оборудования из папок
source "$path_to_script/Deus_networkus/Modules/choose_your_equipments.sh"
#Содержимое файла передаётся в переменную
switches_=$(cat "$list_switches_")
#Строки проверяются на наличие названий вендоров и распределяются в соотвествующие списки. Потом эти списки проверяются на наличие IP-адресов и они сохраняются в отдельные переменные.
cisco_list=$(echo "$switches_" | grep "Cisco")
cisco_ips=$(echo "$cisco_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
eltex_list=$(echo "$switches_" | grep "Элтекс")
eltex_ips=$(echo "$eltex_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
natex_list=$(echo "$switches_" | grep "Натекс")
natex_ips=$(echo "$natex_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
arlan_list=$(echo "$switches_" | grep "Арлан")
arlan_ips=$(echo "$arlan_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
#Если переменные не пустые, то выполняется команда к каждому IP-адресу из списка.
if [ "$cisco_ips" != "" ]; then
echo "$cisco_ips" | while IFS= read -r line; do
ip_=$line
lets_go_save_cisco_eltex_natex
sleep 1
done
fi
if [ "$eltex_ips" != "" ]; then
echo "$eltex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_save_cisco_eltex_natex
sleep 1
done
fi
if [ "$natex_ips" != "" ]; then
echo "$natex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_save_cisco_eltex_natex
sleep 1
done
fi
if [ "$arlan_ips" != "" ]; then
echo "$arlan_ips" | while IFS= read -r line; do
ip_=$line
lets_go_save_arlan
sleep 1
done
fi
fi
fi
if [ $command_ == "3" ]; then
echo "IP-адреса из своего списка или из готовых?"
echo "1. Свой"
echo "2. Готовый"
read list_
if [ $list_ == "1" ]; then
echo "Список уже готов или Вы хотите создать его прямо сейчас?"
echo "1. Готов"
echo "2. Сделаю сейчас"
read ready_
if [ $ready_ == "1" ]; then
echo "Команды уже записаны в файл или записать сейчас?"
echo "1. Уже записаны"
echo "2. Записать сейчас"
read commands_ready
if [ $commands_ready == "1" ]; then
#Передача списка адресов в переменную
ip_list="$1/Deus_networkus/ip_.txt"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_list"
#Адреса из массива передаются в переменную
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
lets_go_command
sleep 1
done
fi
if [ $commands_ready == "2" ]; then
#Создаём переменную, в которую сохраним путь к файлу с IP-адресами
output_commands_file="$1/Deus_networkus/instructions_.txt"
#Очистим файл
> "$output_commands_file"
echo "Введите команды. Для завершения используйте Ctrl+D"
#Считываем данные и передаём их в файл
while read -p "Команда: " command_to_file; do
echo "$command_to_file" >> "$output_commands_file"
done
echo "Ввод завершён. Команды сохранены."
#Передача списка адресов в переменную
ip_list="$1/Deus_networkus/ip_.txt"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_list"
#Адреса из массива передаются в переменную
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
lets_go_command
sleep 1
done
fi
fi
if [ $ready_ == "2" ]; then
#Создаём переменную, в которую сохраним путь к файлу с IP-адресами
output_file="$1/Deus_networkus/ip_.txt"
#Очистим файл
> "$output_file"
echo "Введите IP-адреса. Для завершения используйте Ctrl+D"
#Считываем данные и передаём их в файл
while read -p "IP адрес: " ip_address; do
echo "$ip_address" >> "$output_file"
done
echo "Ввод завершён. IP-адреса сохранены."
echo "Команды уже записаны в файл или записать сейчас?"
echo "1. Уже записаны"
echo "2. Записать сейчас"
read commands_ready
if [ $commands_ready == "1" ]; then
#Передача списка адресов в переменную
ip_list="$output_file"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_list"
#Адреса из массива передаются в переменную
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
lets_go_command
sleep 1
done
fi
if [ $commands_ready == "2" ]; then
#Создаём переменную, в которую сохраним путь к файлу с IP-адресами
output_commands_file="$1/Deus_networkus/instructions_.txt"
#Очистим файл
> "$output_commands_file"
echo "Введите команды. Для завершения используйте Ctrl+D"
#Считываем данные и передаём их в файл
while read -p "Команда: " command_to_file; do
echo "$command_to_file" >> "$output_commands_file"
done
echo "Ввод завершён. Команды сохранены."
#Передача списка адресов в переменную
ip_list="$1/Deus_networkus/ip_.txt"
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_list"
#Адреса из массива передаются в переменную
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
lets_go_command
sleep 1
done
fi
fi
fi
if [ $list_ == "2" ]; then
echo " "
echo "Какое оборудование Вам нужно? "
echo "============================="
#Считываются папки, в которых содержатся папки с площадками и выводятся списком, обозначая сегменты оборудования.
list_segments_="$(ls "$1/Deus_networkus/Lists_of_switches/")"
#Сортируем список в порядке возрастания
sort_list_segments_=$(echo -e "$list_segments_" | sort -n)
#Выводится список сегментов, отсортированный по числам
echo "$sort_list_segments_"
#Выбирается сегмент
read segment_
#Запускается скрипт для вывода списка оборудования из папок
source "$path_to_script/Deus_networkus/Modules/choose_your_equipments.sh"
#Содержимое файла передаётся в переменную
switches_=$(cat "$list_switches_")
#Строки проверяются на наличие названий вендоров и распределяются в соотвествующие списки. Потом эти списки проверяются на наличие IP-адресов и они сохраняются в отдельные переменные.
cisco_list=$(echo "$switches_" | grep "Cisco")
cisco_ips=$(echo "$cisco_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
eltex_list=$(echo "$switches_" | grep "Элтекс")
eltex_ips=$(echo "$eltex_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
natex_list=$(echo "$switches_" | grep "Натекс")
natex_ips=$(echo "$natex_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
arlan_list=$(echo "$switches_" | grep "Арлан")
arlan_ips=$(echo "$arlan_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
echo "Команды уже записаны в файл или записать сейчас?"
echo "1. Уже записаны"
echo "2. Записать сейчас"
read commands_ready
if [ $commands_ready == "1" ]; then
#Если переменные не пустые, то выполняется команда к каждому IP-адресу из списка.
if [ "$cisco_ips" != "" ]; then
echo "$cisco_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
if [ "$eltex_ips" != "" ]; then
echo "$eltex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
if [ "$natex_ips" != "" ]; then
echo "$natex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
if [ "$arlan_ips" != "" ]; then
echo "$arlan_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
fi
if [ $commands_ready == "2" ]; then
#Создаём переменную, в которую сохраним путь к файлу с IP-адресами
output_commands_file="$1/Deus_networkus/instructions_.txt"
#Очистим файл
> "$output_commands_file"
echo "Введите команды. Для завершения используйте Ctrl+D"
#Считываем данные и передаём их в файл
while read -p "Команда: " command_to_file; do
echo "$command_to_file" >> "$output_commands_file"
done
echo "Ввод завершён. Команды сохранены."
#Если переменные не пустые, то выполняется команда к каждому IP-адресу из списка.
if [ "$cisco_ips" != "" ]; then
echo "$cisco_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
if [ "$eltex_ips" != "" ]; then
echo "$eltex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
if [ "$natex_ips" != "" ]; then
echo "$natex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
if [ "$arlan_ips" != "" ]; then
echo "$arlan_ips" | while IFS= read -r line; do
ip_=$line
lets_go_command $1
sleep 1
done
fi
fi
fi
fi
echo -e "\033[32mЗадание выполнено!\033[0m"
echo " "
done

26
Modules/network_test.sh Normal file
View file

@ -0,0 +1,26 @@
#!/bin/bash
while : #Запускается основной цикл
do
cat << EOF
+-------------------------------------------------------------------------------+
| Модуль |
| для тестирования сетей |
+-------------------------------------------------------------------------------+
EOF
echo "Добро пожаловать в модуль для тестирования сетей"
echo "========================="
echo "Пинг стандартными (56 байт) пакетами"
echo "========================="
ping -c 10 $1
echo "Пинг большими (1000 байт) пакетами"
echo "========================="
ping -s 1000 -c 10 $1
echo "Маршрут до узла"
echo "========================="
traceroute $1
echo -e "\033[32mПроверка выполнена\033[0m"
read
exit
done

185
Modules/ppr.sh Normal file
View file

@ -0,0 +1,185 @@
#!/bin/bash
while : #Запускается основной цикл
do
cat << EOF
+-------------------------------------------------------------------------------+
| Модуль |
| для проведения ППР на коммутаторах |
+-------------------------------------------------------------------------------+
EOF
#Путь до папки со скриптами принимается при вызове скрипта
path_to_script=$1
date_=$(date +%Y)
#Передача списка адресов в переменную
ip_list="$path_to_script/Deus_networkus/ip_.txt"
echo "Добро пожаловать в модуль для проведения ППР"
echo "========================="
echo "Введите имя пользователя:"
read user_
#Скрыть ввод пароля
stty_orig=$(stty -g)
stty -echo
read -p "Введите пароль:" pass_
#Возврат нормального ввода
stty "$stty_orig"
#Функция для передачи команд для проедения ППР
function lets_go_ppr() {
echo -e "\033[0;32mПодключение к $ip_\033[0m"
echo "==========" > $ip_.ppr.txt
echo "SHOW RUN" >> $ip_.ppr.txt
echo "==========" >> $ip_.ppr.txt
sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$ip_ "sh run" >> $ip_.ppr.txt
echo "==========" >> $ip_.ppr.txt
echo "SHOW LOG" >> $ip_.ppr.txt
echo "==========" >> $ip_.ppr.txt
sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$ip_ "sh log" >> $ip_.ppr.txt
echo "==========" >> $ip_.ppr.txt
echo "SHOW VERSION" >> $ip_.ppr.txt
echo "==========" >> $ip_.ppr.txt
sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$ip_ "sh ver" >> $ip_.ppr.txt
echo -e "\033[0;32mОтключение от $ip_\033[0m"
#Поиск названия оборудования
name_=$(cat $ip_.ppr.txt | grep "hostname")
name_words=($name_)
#Переименование выходного файла
mv $ip_.ppr.txt "/home/$USER@sgp.gazprom.ru/Документы/Данные со скрипта/PPR/${name_words[1]}.PPR.$date_.txt"
}
function lets_go_exctract_ips {
echo "$lpu_list" | while IFS= read -r line; do
switches_list="$path_to_script$(echo "$line")"
switches_=$(cat "$switches_list")
#Строки проверяются на наличие названий вендоров и распределяются в соотвествующие списки. Потом эти списки проверяются на наличие IP-адресов и они сохраняются в отдельные переменные.
cisco_list=$(echo "$switches_" | grep "Cisco")
cisco_ips=$(echo "$cisco_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
eltex_list=$(echo "$switches_" | grep "Элтекс")
eltex_ips=$(echo "$eltex_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
natex_list=$(echo "$switches_" | grep "Натекс")
natex_ips=$(echo "$natex_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
arlan_list=$(echo "$switches_" | grep "Арлан")
arlan_ips=$(echo "$arlan_list" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
#Если переменные не пустые, то выполняется команда к каждому IP-адресу из списка.
if [ "$cisco_ips" != "" ]; then
echo "$cisco_ips" | while IFS= read -r line; do
ip_=$line
lets_go_ppr
sleep 1
done
fi
if [ "$eltex_ips" != "" ]; then
echo "$eltex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_ppr
sleep 1
done
fi
if [ "$natex_ips" != "" ]; then
echo "$natex_ips" | while IFS= read -r line; do
ip_=$line
lets_go_ppr
sleep 1
done
fi
if [ "$arlan_ips" != "" ]; then
echo "$arlan_ips" | while IFS= read -r line; do
ip_=$line
lets_go_ppr
sleep 1
done
fi
done
}
echo "IP-адреса из своего списка или из готовых?"
echo "1. Свой"
echo "2. Готовый"
read list_
if [ $list_ == "1" ]; then
#Передача списка адресов в массив
mapfile -t ips_ < "$ip_list"
#Адреса из массива передаются в переменную
for ip_ in "${ips_[@]}"; do
#Проверка на правильность написания IP-адреса
if [[ -z "$ip_" || "$ip_" == \#* ]]; then
continue
fi
lets_go_ppr
done
fi
if [ $list_ == "2" ]; then
cisco_list=()
eltex_list=()
natex_list=()
arlan_list=()
echo "Какой месяц нужен?"
echo "1. Январь"
echo "2. Февраль"
echo "3. Март"
echo "4. Апрель"
echo "5. Май"
echo "6. Июнь"
echo "7. Июль"
echo "8. Август"
echo "9. Сентябрь"
echo "10. Октябрь"
echo "11. Ноябрь"
echo "12. Декабрь"
read sublist_
if [ $sublist_ == "1" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/January")
lets_go_exctract_ips
elif [ $sublist_ == "2" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/February")
lets_go_exctract_ips
elif [ $sublist_ == "3" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/March")
lets_go_exctract_ips
elif [ $sublist_ == "4" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/April")
lets_go_exctract_ips
elif [ $sublist_ == "5" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/May")
lets_go_exctract_ips
elif [ $sublist_ == "6" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/June")
lets_go_exctract_ips
elif [ $sublist_ == "7" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/July")
lets_go_exctract_ips
elif [ $sublist_ == "8" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/August")
lets_go_exctract_ips
elif [ $sublist_ == "9" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/September")
lets_go_exctract_ips
elif [ $sublist_ == "10" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/October")
lets_go_exctract_ips
elif [ $sublist_ == "11" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/November")
lets_go_exctract_ips
elif [ $sublist_ == "12" ]; then
#Передаём IP-адреса в пременную
lpu_list=$(cat "$path_to_script/Deus_networkus/Switch_PPR/December")
lets_go_exctract_ips
fi
fi
echo -e "\033[32mЗадание выполнено\033[0m"
echo " "
echo " "
echo " "
done

View file

@ -0,0 +1,17 @@
#! /usr/bin/expect
#Используем модуль expect для того, чтобы принимать запросы и отвечать на них
set timeout -1
#Устанавливаем переменные, значения для которых приняли при вызове функции
set ip_address [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
#Подключаемся с помощью telnet
spawn telnet $ip_address 23
#В ответ на запросы передаём ответы
expect "username:"
send "$user\r"
expect "password:"
send "$pass\r"
interact

View file

@ -0,0 +1,17 @@
#! /usr/bin/expect
#Используем модуль expect для того, чтобы принимать запросы и отвечать на них
set timeout -1
#Устанавливаем переменные, значения для которых приняли при вызове функции
set ip_address [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
#Подключаемся с помощью telnet
spawn telnet $ip_address 23
#В ответ на запросы передаём ответы
expect "Username:"
send "$user\r"
expect "Password:"
send "$pass\r"
interact

6
Modules/update.sh Normal file
View file

@ -0,0 +1,6 @@
#!/bin/bash
path_to_script=$1
cd $path_to_script/Deus_networkus
git pull origin master
cp $path_to_script/Deus_networkus/config_ssh.txt /home/$USER/.ssh/config

33
README.md Normal file
View file

@ -0,0 +1,33 @@
# Скрипт для подключения к сетевому оборудованию.
Версия скрипта имеет вид 1.0.0
Последняя цифра означает изменения "под капотом", предпоследняя меняется при добавлении нового модуля, первая при глобальном изменении.
`deus_netwokus` - скрипт для управления сетевым оборудованием. Он содержит основное меню, функционал для подключения к оборудованию, а также запускает дополнительные модули.
`commands` - модуль для передачи команд на оборудование
`ppr` - модуль для проведения ППР
`update` - скрипт для обновления
`choose_your_equipments` - скрипт для вывода списка обрудования из папки `Lists_of_switches`
Для успешного использовния скрипта необходимо, чтобы на ПК были установлены:
```
1. SSH-клиент
2. Telnet-клиент
3. SSHpass
```
Проверка нужного ПО проводится при запуске скрипта, и если она не будет пройдена, то скрипт выведет список ПО, которое нужно установить.
Для подключения к коммутатору необходимо:
1. Ввести логин и пароль от Tacacs;
2. Выбрать нужный тип оборудования, нажав нужную цифру;
3. Из появившегося списка цифрой выбрать необходимое ЛПУ;
4. Цифрой выбрать нужный коммутатор.
Папка `Lists_of_switches` содержит папки с сегментами, они считываются автоматически и выводятся в меню. После выбора сегмента считываются папки с локациями, далее с площадкой. Далее считывается список оборудования на площадке. Далее выбранный IP-адрес проверяется по спискам `telnet_cisco`, `telnet_natex` и `WEB`. Если адрес находится в них, то запускается или соответствующий производителю оборудования скрипт для Telnet-подключения, или запускается браузер со страницей входа. Если IP-адреса нет в данных списках, то происходит SSH-подключение.
В файл `ip_.txt` заносятся IP-адреса для моудлей `commands` и `ppr`, к которым необходимо применить некоторые действия.
В файл `instructions_.txt` заносятся команды для модуля `commands`, которые необходимо применить к оборудовани.
В файл `instructions_for_ppr.txt` заносятся команды необходимые для проведения ППР.
Файл `config_ssh.txt` содержит настройки для SSH-клиента, которые необходимо вставить в файл `~/.ssh/config`. Это делается автоматичски при обновлении скрипта.
Файлы с выводами сохраняются по пути, который указан в скрипте, например `/home/user/Documents/Данные со скрипта`.

1
Switch_PPR/April Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/August Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/December Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/February Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/January Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/July Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/June Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/March Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/May Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/November Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/October Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
Switch_PPR/September Normal file
View file

@ -0,0 +1 @@
/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1

1
WEB Normal file
View file

@ -0,0 +1 @@
10.33.0.3

0
config_ssh.txt Normal file
View file

225
deus_networkus.sh Normal file
View file

@ -0,0 +1,225 @@
#! /bin/bash
cat << EOF
██████╗░███████╗██╗░░░██╗░██████╗
██╔══██╗██╔════╝██║░░░██║██╔════╝
██║░░██║█████╗░░██║░░░██║╚█████╗░
██║░░██║██╔══╝░░██║░░░██║░╚═══██╗
██████╔╝███████╗╚██████╔╝██████╔╝
╚═════╝░╚══════╝░╚═════╝░╚═════╝░
███╗░░██╗███████╗████████╗░██╗░░░░░░░██╗░█████╗░██████╗░██╗░░██╗██╗░░░██╗░██████╗
████╗░██║██╔════╝╚══██╔══╝░██║░░██╗░░██║██╔══██╗██╔══██╗██║░██╔╝██║░░░██║██╔════╝
██╔██╗██║█████╗░░░░░██║░░░░╚██╗████╗██╔╝██║░░██║██████╔╝█████═╝░██║░░░██║╚█████╗░
██║╚████║██╔══╝░░░░░██║░░░░░████╔═████║░██║░░██║██╔══██╗██╔═██╗░██║░░░██║░╚═══██╗
██║░╚███║███████╗░░░██║░░░░░╚██╔╝░╚██╔╝░╚█████╔╝██║░░██║██║░╚██╗╚██████╔╝██████╔╝
╚═╝░░╚══╝╚══════╝░░░╚═╝░░░░░░╚═╝░░░╚═╝░░░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝░╚═════╝░╚═════╝░
+-------------------------------------------------------------------------------+
| Скрипт |
| для подключения к сетевому оборудованию |
+-------------------------------------------------------------------------------+
EOF
# Устанавливаем список необхожимого софта и список для записи того чего у нас ещё нет
soft_=("telnet" "xpra" "ssh" "sshpass")
need_soft_=()
# Проверяем наличие установленных программ по списку и добавлением необходимого в пустой список.
# Если программа установлена, но возле неё отображается галочка, если нет - крестик.
for program in "${soft_[@]}"
do
if [ -x "$(command -v $program)" ]; then
echo -e "$program \033[32m✔\033[0m"
else
echo -e "$program \033[31m✘\033[0m"
need_soft_+="$program"
need_soft_+=" "
fi
done
#Функция для ввода логина и пароля от оборудования (Tacacs или локальный)
function lets_go_pass {
echo "Введите имя пользователя:"
read user_
#Скрыть ввод пароля
stty_orig=$(stty -g)
stty -echo
read -p "Введите пароль:" pass_
#Возврат нормального ввода
stty "$stty_orig"
}
#Указывается путь до папки со скриптами и до папки с хранением вывода
path_to_script="/home/$USER/Документы/Scripts"
path_to_date="/home/$USER/Документы"
#Проверяем существуют ли папки для сохранения файлов с данными по работе скриптов
if [ -d "$path_to_date/Данные со скрипта" ] && [ -d "$path_to_date/Данные со скрипта/Backups" ] && [ -d "$path_to_date/Данные со скрипта/PPR" ]; then
echo "Все необходимые папки для сохранения данных имеются"
else
if ! [ -d "$path_to_date/Данные со скрипта" ]; then
mkdir "$path_to_date/Данные со скрипта"
fi
if ! [ -d "$path_to_date/Данные со скрипта/Badckups" ]; then
mkdir "$path_to_date/Данные со скрипта/Backups"
fi
if ! [ -d "$path_to_date/Данные со скрипта/PPR" ]; then
mkdir "$path_to_date/Данные со скрипта/PPR"
fi
echo "Необходимые папки для работы скрипта созданы"
fi
#Указывается название терминала в системе
your_terminal=mate-terminal
echo "============================="
# Если весь необходимый софт установлен, то запускается основной цикл
if [[ ${#need_soft_[@]} == 0 ]]; then
lets_go_pass
#Передаём в переменные списки с IP-адресами, чьи протоколы подключения отличаются от SSH
telnet_cisco_=$(cat "$path_to_script/Deus_networkus/telnet_cisco")
telnet_natex_=$(cat "$path_to_script/Deus_networkus/telnet_natex")
WEB_=$(cat "$path_to_script/Deus_networkus/WEB")
#Разбиваем IP-адреса из файлов на переменные
IFS=$'\n' read -ra telnet_cisco_array <<< "$telnet_cisco_"
IFS=$'\n' read -ra telnet_natex_array <<< "$telnet_natex_"
IFS=$'\n' read -ra WEB_array <<< "$WEB_"
#Вводим флаг для проверки наличия IP-адресов в списках
found_=false
#Функция для вызова коммутатора
function lets_go_connect {
#Считывается аргумент, передаваемый при вызове функции, соответствующий порядковому номеру коммутатора
line_number="$1"
#Из списка IP-адресов выбирается нужный, согласно принятому аргументу
selected_ip=$(echo "$ips_" | sed -n "${line_number}p")
#Через терминал запускается сеанс mate-terminal, имя пользователя и пароль передаются из переменных, подтверждение подключения к новому хосту проводится автоматически.
#Проверяются некоторые IP, которые не имеют SSH, и подключаются согласно доступным средствам.
for item_ in "${telnet_cisco_array[@]}"; do
if [[ "$item_" == "$selected_ip" ]]; then
found_=true
$your_terminal -e "$path_to_script/Deus_networkus/Modules/telnet_connect_cisco.sh "$selected_ip" "$user_" "$pass_""
break
fi
done
if ! $found_; then
for item_ in "${telnet_natex_array[@]}"; do
if [[ "$item_" == "$selected_ip" ]]; then
found_=true
$your_terminal -e "$path_to_script/Deus_networkus/Modules/telnet_connect_natex.sh "$selected_ip" "$user_" "$pass_""
break
fi
done
fi
if ! $found_; then
for item_ in "${WEB_array[@]}"; do
if [[ "$item_" == "$selected_ip" ]]; then
found_=true
$your_terminal -e "firefox "$selected_ip""
break
fi
done
fi
if ! $found_; then
$your_terminal -e "sshpass -p "$pass_" ssh -o StrictHostKeyChecking=no $user_@$selected_ip"
fi
found_=false
}
while : #Запускается цикл вывода меню
do
echo " "
echo "============================="
echo "Какое оборудование Вам нужно? "
echo "============================="
#Считываются папки, в которых содержатся папки с площадками и выводятся списком, обозначая сегменты оборудования.
list_segments_="$(ls "$path_to_script/Deus_networkus/Lists_of_switches/")"
#Сортируем список в порядке возрастания
sort_list_segments_=$(echo -e "$list_segments_" | sort -n)
#Выводится список сегментов, отсортированный по числам
echo "$sort_list_segments_"
echo "============================="
echo "Дополнительные модули:"
echo "============================="
echo "Введите 'commands' для передачи целого списка команд на разное оборудование."
echo "Введите 'ppr' для проведения ППР коммутаторов."
echo "Введите 'xpra' для настройки оборудования через подключение к удалённому ПК."
echo "Введите 'tftp', чтобы поднять TFTP-сервер на 10.32.5.142"
echo "Введите 'test', чтобы протестировать связь до узла"
echo "Введите 'pass', чтобы обновить логин и пароль введёные ранее в скрипт"
echo "Введите 'update' для обновления скрипта."
#Выбирается сегмент
read segment_
#Проверка на пустой ввод
if [[ -z "$segment_" ]]; then
continue
#Запуск модуля для передачи команд на оборудование
elif [[ "$segment_" == "commands" ]]; then
$your_terminal -e "$path_to_script/Deus_networkus/Modules/commands.sh $path_to_script"
continue
#Запуск модуля для проведения ППР
elif [[ "$segment_" == "ppr" ]]; then
$your_terminal -e "$path_to_script/Deus_networkus/Modules/ppr.sh $path_to_script"
continue
#Запуск модуля для обновления скрипта
elif [[ "$segment_" == "update" ]]; then
$your_terminal -e "$path_to_script/Deus_networkus/Modules/update.sh $path_to_script"
sleep 1
echo -e "\033[32mОбновление завершено\033[0m"
exec "$0"
#Запуск модуля для обновления логина и пароля
elif [[ "$segment_" == "pass" ]]; then
lets_go_pass
continue
#Подключение к оборудованию через удалённый ПК, с установленным Putty. Пользователь должен иметь root-права для подключения к Serial-порту.
elif [[ "$segment_" == "xpra" ]]; then
echo "Введите IP-адрес ПК к которому нужно подключиться"
read ip_
echo "Введите имя пользователя на сервере"
read username_
xpra start ssh://$username_@$ip_ --start=putty
continue
elif [[ "$segment_" == "tftp" ]]; then
echo "Введите имя пользователя на сервере 10.32.5.142"
read username_
echo "Какая подсеть Вам нужна? "
echo "============================="
echo "1. АСУ ПХД"
echo "2. АСУ ТП и КПТМ"
read net_
#Запускается скрипт для одной из подсетей. Файлы хранятсяя в папке /home/tftp
if [ $net_ == "1" ]; then
ssh -t $username_@10.32.5.142 "sudo python2 tftpgui/tftpgui.py tftpgui/tftpgui_phd.cfg --nogui"
elif [ $net_ == "2" ]; then
ssh -t $username_@10.32.5.142 "sudo python2 tftpgui/tftpgui.py tftpgui/tftpgui_tp.cfg --nogui"
fi
continue
elif [[ "$segment_" == "test" ]]; then
echo "Введите IP-адрес соединение до которого нужно проверить"
read ip_
$your_terminal -e "$path_to_script/Deus_networkus/Modules/network_test.sh $ip_"
continue
fi
#Запускается скрипт для вывода списка оборудования из папок
source "$path_to_script/Deus_networkus/Modules/choose_your_equipments.sh"
#Пока не будет нажат Enter, будет появляться список оборудования
while :
do
#Выводим список оборудования
cat "$list_switches_"
#Составляем список адресов, содержащихся в файле
ips_=$(grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" "$list_switches_")
#Считывается коммутатор
read switch_
if [[ -z "$switch_" ]]; then
break
fi
lets_go_connect "$switch_"
done
clear #По нажатию клавиши Enter очищается экран и цикл идёт на новую итерацию
done
# Если какого-то софта не хватает, то появляется список того, что нужно установить
else
echo -e "\033[31mНеобходимо установить следующий софт:\033[0m"
echo ${need_soft_}
read
fi

1
instructions_.txt Normal file
View file

@ -0,0 +1 @@
wr

4
instructions_for_ppr.txt Normal file
View file

@ -0,0 +1,4 @@
show run
show log
show int status
wr

1
ip_.txt Normal file
View file

@ -0,0 +1 @@
10.0.0.1

1
telnet_cisco Normal file
View file

@ -0,0 +1 @@
10.33.0.1

1
telnet_natex Normal file
View file

@ -0,0 +1 @@
10.33.0.2