Нужно создать програму по типу чекер

Добрый день.Я в баш скриптах недавно около месяца.Поступила задача написать скрипт.Суть скрипта он выполняет команду по поиску айпишнико на сервере, потом проверяет активность.Если активен выполняет запрос fru инфы ,по SN выполняет поиск логов.И в конце выводит логи. Свой скрип в прилоге. СПАСИБО.


Может что-то подскажете как улучшить либо оптимизировать.

Привет, текстом скинь пожалуйста код.

Код:

#! /bin/bash
ip=`arp -n | awk '$4=="C"{print$1}' | grep "192."`
n=1
for i in $ip; do
    SN=`ipmitool -I lanplus -H ${i} -U admin -P admin fru print 0 | awk "/Chassis Serial/"'{print$4}'`
    if [[ "$SN"==1 ]]; then
        cd /usr/local/Bahubali/Project/Station/$SN
        log=`cat "$SN".CSY | grep -i "L10_V"`
        log2=`cat "$SN".CSY | grep -i "L12_V"`
        if [[ $log>1 ]]; then
            stage=`cat /usr/local/Bahubali/L10/log/$SN/run_stage`
            status=`cat /usr/local/Bahubali/L10/log/$SN/run_status`
            echo -e "\e[32m$n]\t$SN\e[0m" "|  L10  |"" $status |"" $stage |"
        elif [[ $log2>1 ]]; then
            stage1=`cat /usr/local/Bahubali/L12/log/$SN/run_stage`
            status1=`cat /usr/local/Bahubali/L12/log/$SN/run_status`
            echo -e "\e[33m$n]\t$SN\e[0m" "|  L12  |"" $status1 |"" $stage1 |"
        else
            stage3=`cat /usr/local/Bahubali/L12-3/log/$SN/run_stage`
            status3=`cat /usr/local/Bahubali/L12-3/log/$SN/run_status`
            echo -e "\e[34m$n]\t$SN\e[0m" "|  L12-3  |"" $status3 |"" $stage3 |"
        fi
    fi
((n++))
done

Самый большой напряг это когда команда ipmitool делает запрос на железо ,а само железо в данный момент не может дать ответ. То в следствии получаю 10-15с задержки кода и потом флуд ерор кодом: Error Unable to establish IPMI v2 / RMCP + session.
Как бы то сделать так чтобы програмvа просто скипала неактивный сервер и не выводила код ошибки?

Привет - проверь доступность сервера по ip например, если недоступен, скипай его:

if ping -c1 -w3 ${i} >/dev/null 2>&1
then
    SN=`ipmitool....`
else
    echo "Host ${i} does not available"
fi
1 Like