URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 3195
[ Назад ]

Исходное сообщение
"Squid+SMS Mobile Phone!"

Отправлено Lotos20 , 16-Май-05 04:28 
Ребята подскажите пожалуйста. Нужен скрипт, чтобы раз в 10-15 минут проверял, запущен ли сквид или нет, если же не запущен то чтобы отсылал сообщения на мобильный телефон, вот мол писец сквиды езжай на работу переустанавливай все.

Мне попался скрипты кое какие по ентому поводу, но так довести squid.sh я так и не смог. Помогите пожалуйста если Вам не трудно.

Squid.php
--------------------
<?
$to="80677777777@2sms.kyovstar.net";
$subject="Squid was down";
mail($to, $subject, "HELP ME!!!", "From: root@lalala.ru");
?>

Squid.sh
--------------------
#!/bin/sh
SQUID_PID=`ps aux | grep "squid" | grep -v grep | awk '{print $2}'`
if [ "$SQUID_PID" != "" ];then
echo "SQUID PID is: $SQUID_PID."
#echo "Restarting SQUID..."
#/usr/local/squid/sbin/squid -k reconfigure
else
echo "SQUID is not running, or it process was killed!"
echo "Starting SQUID"
/usr/local/squid/sbin/squid
php /usr/local/squid.php
fi

Запускаю Squid.sh и тишина пишеть

# ./squid.sh
./squid.sh: 12: Syntax error: end of file unexpected
Press any key to continue...

Помогите пожалуйста, так как я в написании скриптов не очень :-((


Содержание

Сообщения в этом обсуждении
"Squid+SMS Mobile Phone!"
Отправлено MoHaX , 16-Май-05 04:45 
В редакторе после последней строчки "fi" нажми на Enter и сохрани.

"Squid+SMS Mobile Phone!"
Отправлено zizmo , 16-Май-05 13:35 
>Ребята подскажите пожалуйста. Нужен скрипт, чтобы раз в 10-15 минут проверял, запущен
>ли сквид или нет, если же не запущен то чтобы отсылал
>сообщения на мобильный телефон, вот мол писец сквиды езжай на работу
>переустанавливай все.
>

Не совсем в тему, но вдруг пригодится =) В смысле, зачем ехать на работу, когда все можно попробовать автоматизировать

В крон добавляем (проверка каждые 2 мин)
*/2 * * * *     /путь/к/скрипту/s_checker.pl > /dev/null

Сам скрипт (пинать не надо, лепил на скорую руку)

!/usr/bin/perl
my $check = `ps ax | grep squid | wc -l`; #Колво строк со сквидом в процессах
$i = 1;

while ($check <= 5) {        #Если строк меньше 5 --> сквид упал
    $time = localtime(time);    #Время для отчета
    system "/usr/local/etc/rc.d/squid.sh stop > /dev/null" || mail_err("Не могу остановить squid.sh                #Перестраховка -)
#Тут желательно дать сквиду 30-60 сек для нормального останова
#sleep 45;
    system "/usr/local/etc/rc.d/squid.sh start > /dev/null" || mail_err("Не могу запустить squid.sh                #Рестарт
    mail_err("Squid is down!");    #Рапорт на мыло
    sleep 3;                #Даем время подняться
    $check = `ps ax | grep squi | wc -l`;    #Проверяем
    $i = $i + 1;            #Счетчик до 3х =)
    if ($i==4) {            #Даем время одуматься (2 мин) до следующего запуска
        exit(0);
    }
}

sub mail_err {            #Сообщаем о проблеме и ее не/решении =)
    ($message)=@_;
    $message=($time ." " . $message . " попытка: " . $i);
    open MAIL, '|/usr/sbin/sendmail -t';
    print MAIL "From: s_checker\@твой_домен.ru.\n",
    "To: твое\@мыло.ru\n",
    "Subject: Squid checker report\n\n",
    $message;
    close MAIL or die "Sendmail failed: $!";
}

И, собственно, отпадает нужда бежать на работу.
Использую его уже около месяца и проблем не испытываю.

Если кто что хочет добавить/поправить по коду, буду рад ценным мыслям.