185 lines
8.5 KiB
Bash
Executable file
185 lines
8.5 KiB
Bash
Executable file
#!/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
|