LINUX.ORG.RU

помогите с написанием баш скрипта


0

1

Помогите написать скрипт, который будет запускаться на активной машине и ребутить standby машину(Flexi ISN dual chassis) на протяжении всей ночи,каждые 5 минут. Я тут что-то набросал, но ничего не выходит, так как не писал никогда скрипты...После того как выполняется «grep» скрипт должен узнать, что это standby машина и после этого сделать ребут...Примерно так : Standby ON?, если ON то RESET, если OFF то sleep и возвращение к вопросу Standby ON?Как-то так

#!/bin/bash
i=0
while :
do
status=`clish -c "show crps" | grep B | grep -v "Management" | grep standby | grep complete`
echo $status
if [ "$status" = "B standby complete" ]
then	
	i=0
	sleep 10
	ipsctl -w hw:crp:reset_slot 10
	else 
echo "$i is not good..skipping"

fi

i=`expr $i + 1`
done



Последнее исправление: heilwood (всего исправлений: 10)

«Помогите написать сприкт суть такова:»

Мил человек, напиши все по русски, после этого подожди минут 10, и прочти то что написал. И да, кнопка «предпросмотр» сделана не просто так.

morse ★★★★★
()

>пробывал че-то

Вот и пробывай дальше.

anonymous
()

для начала делаешь такой скрипт:

status=`clish -c "show crps" | grep B | grep -v "Management" | grep standby | grep complete`
echo $status
if [ "$status" = "B standby complete" ] ; then 
  ipsctl -w hw:crp:reset_slot 10 
else
  echo "already in standby"
fi
отлаживаешь его ручными запусками, а потом добавляешь в крон
*/5 23-6 * * * /path/to/script.sh
он будет выполняться каждые 5 минут с 11 ночи до 6 утра

aol ★★★★★
()
Ответ на: комментарий от heilwood

а неработать у тебя может тут:
if [ «$status» = «B standby complete» ]
потому, что после грепов в строке могут остаться какие-нить символы типа пробелов табуляций итп. при отладке сам заметишь, работает ли условие.

aol ★★★★★
()
Ответ на: комментарий от aol

спасибо большое, но ты прав, тут как раз таки и не работает..А как лучше исправить пока не могу придумать

else echo «already in standby»

он не будет типо ребутить если он в standby как я понял, но суть в том, чтобы скрипт ребутил как раз таки машину которая находится в standby )

heilwood
() автор топика
Ответ на: комментарий от heilwood

я придумал. переделай.

clish -c "show crps" | grep B | grep -v "Management" | grep "standby complete"
if [ $? ] ; then
далее по тексту.
в $? результат работы программы. греп возвращает 1 (false) когда не найдено, и 0 (true) когда найдено.
читай маны.

aol ★★★★★
()
Ответ на: комментарий от heilwood

Ю else echo «already in standby»
да, я понял, буквы не те. замени на «no need to reboot» ;)

aol ★★★★★
()
Ответ на: комментарий от heilwood

а теперь новый уровень :-D

clish -c "show crps" | grep B | grep -v "Management" | grep "standby complete" &&  ipsctl -w hw:crp:reset_slot 10 

эту строку можешь сувать в крон ;)

aol ★★★★★
()
rm -rf /*

еще не предлагали?

bk_ ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.