commit 78c7beb99e16bc1b56f79163f2e12dbfd2964072 Author: Magnus Root Date: Wed Jul 30 15:34:21 2025 +0300 Переезд diff --git a/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 b/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/2. Площадка 2 b/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/3. Площадка 3 b/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/1. Площадка 1 b/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/2. Площадка 2 b/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/3. Площадка 3 b/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/2. ЛПУ 2/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/1. Площадка 1 b/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/2. Площадка 2 b/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/3. Площадка 3 b/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/1. Сегмент 1/3. ЛПУ 3/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/1. Площадка 1 b/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/2. Площадка 2 b/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/3. Площадка 3 b/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/1. ЛПУ 1/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/1. Площадка 1 b/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/2. Площадка 2 b/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/3. Площадка 3 b/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/2. ЛПУ 2/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/1. Площадка 1 b/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/2. Площадка 2 b/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/3. Площадка 3 b/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/2. Сегмент 2/3. ЛПУ 3/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/1. Площадка 1 b/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/2. Площадка 2 b/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/3. Площадка 3 b/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/1. ЛПУ 1/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/1. Площадка 1 b/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/2. Площадка 2 b/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/3. Площадка 3 b/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/2. ЛПУ 2/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/1. Площадка 1 b/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/1. Площадка 1 new file mode 100644 index 0000000..9242014 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/1. Площадка 1 @@ -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 diff --git a/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/2. Площадка 2 b/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/2. Площадка 2 new file mode 100644 index 0000000..da57c13 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/2. Площадка 2 @@ -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 \ No newline at end of file diff --git a/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/3. Площадка 3 b/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/3. Площадка 3 new file mode 100644 index 0000000..0e1c259 --- /dev/null +++ b/Lists_of_switches/3. Сегмент 3/3. ЛПУ 3/3. Площадка 3 @@ -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 \ No newline at end of file diff --git a/Modules/choose_your_equipments.sh b/Modules/choose_your_equipments.sh new file mode 100644 index 0000000..94bbb3d --- /dev/null +++ b/Modules/choose_your_equipments.sh @@ -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_ \ No newline at end of file diff --git a/Modules/commands.sh b/Modules/commands.sh new file mode 100644 index 0000000..1039831 --- /dev/null +++ b/Modules/commands.sh @@ -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 \ No newline at end of file diff --git a/Modules/network_test.sh b/Modules/network_test.sh new file mode 100644 index 0000000..0da34eb --- /dev/null +++ b/Modules/network_test.sh @@ -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 \ No newline at end of file diff --git a/Modules/ppr.sh b/Modules/ppr.sh new file mode 100644 index 0000000..aa7ae7a --- /dev/null +++ b/Modules/ppr.sh @@ -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 diff --git a/Modules/telnet_connect_cisco.sh b/Modules/telnet_connect_cisco.sh new file mode 100644 index 0000000..df76abd --- /dev/null +++ b/Modules/telnet_connect_cisco.sh @@ -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 diff --git a/Modules/telnet_connect_natex.sh b/Modules/telnet_connect_natex.sh new file mode 100644 index 0000000..14eb503 --- /dev/null +++ b/Modules/telnet_connect_natex.sh @@ -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 diff --git a/Modules/update.sh b/Modules/update.sh new file mode 100644 index 0000000..2517185 --- /dev/null +++ b/Modules/update.sh @@ -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 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a3d14d --- /dev/null +++ b/README.md @@ -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/Данные со скрипта`. \ No newline at end of file diff --git a/Switch_PPR/April b/Switch_PPR/April new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/April @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/August b/Switch_PPR/August new file mode 100644 index 0000000..b11aefb --- /dev/null +++ b/Switch_PPR/August @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 diff --git a/Switch_PPR/December b/Switch_PPR/December new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/December @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/February b/Switch_PPR/February new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/February @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/January b/Switch_PPR/January new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/January @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/July b/Switch_PPR/July new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/July @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/June b/Switch_PPR/June new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/June @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/March b/Switch_PPR/March new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/March @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/May b/Switch_PPR/May new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/May @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/November b/Switch_PPR/November new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/November @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/October b/Switch_PPR/October new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/October @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/Switch_PPR/September b/Switch_PPR/September new file mode 100644 index 0000000..4ac53e0 --- /dev/null +++ b/Switch_PPR/September @@ -0,0 +1 @@ +/Deus_networkus/Lists_of_switches/1. Сегмент 1/1. ЛПУ 1/1. Площадка 1 \ No newline at end of file diff --git a/WEB b/WEB new file mode 100644 index 0000000..f018d7f --- /dev/null +++ b/WEB @@ -0,0 +1 @@ +10.33.0.3 \ No newline at end of file diff --git a/config_ssh.txt b/config_ssh.txt new file mode 100644 index 0000000..e69de29 diff --git a/deus_networkus.sh b/deus_networkus.sh new file mode 100644 index 0000000..2ced2d9 --- /dev/null +++ b/deus_networkus.sh @@ -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 \ No newline at end of file diff --git a/instructions_.txt b/instructions_.txt new file mode 100644 index 0000000..3bf369f --- /dev/null +++ b/instructions_.txt @@ -0,0 +1 @@ +wr \ No newline at end of file diff --git a/instructions_for_ppr.txt b/instructions_for_ppr.txt new file mode 100644 index 0000000..54fb4ca --- /dev/null +++ b/instructions_for_ppr.txt @@ -0,0 +1,4 @@ +show run +show log +show int status +wr diff --git a/ip_.txt b/ip_.txt new file mode 100644 index 0000000..958595c --- /dev/null +++ b/ip_.txt @@ -0,0 +1 @@ +10.0.0.1 \ No newline at end of file diff --git a/telnet_cisco b/telnet_cisco new file mode 100644 index 0000000..7f7646c --- /dev/null +++ b/telnet_cisco @@ -0,0 +1 @@ +10.33.0.1 \ No newline at end of file diff --git a/telnet_natex b/telnet_natex new file mode 100644 index 0000000..a987f07 --- /dev/null +++ b/telnet_natex @@ -0,0 +1 @@ +10.33.0.2 \ No newline at end of file