Проблемы установки, настройки и работы Правильной Операционной Системы
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
KlaccuK
- рядовой
- Сообщения: 16
- Зарегистрирован: 2008-02-24 21:37:57
Непрочитанное сообщение
KlaccuK » 2009-04-08 10:01:41
Добрый день.
есть UPS 2000 подключенный к серверу для корректного завершения работы Win 2к3. при сбоях электроэнергии.
на этотом UPS висят еще коммутатор и proxy на FreeBSD.
цель: отключить freeBSD если не возможно pingануть Win 2k3
знакомый запилил такой скрипт:
Код: Выделить всё
/usr/local/crons/>cat shutdown.pl
#!/usr/bin/perl
use Net::Ping;
#################################################
my $host = '192.168.0.8'; # host to ping
my $pings = 5; # number of pings to send
#################################################
my $count = 0; # number of received pings (DO NOT EDIT)
$p = Net::Ping->new("icmp");
for(my $i = 0; $i < $pings; $i++)
{
$count++ if($p->ping($host, 2));
sleep(1);
}
$p->close();
if($count){
print "Pings sent/rcvd $pings/$count\nHost is reacheble. Doing nothing...\n"; }else{
print "shutdown -p now";
#uncomment next string to make actual shutdown
`shutdown -p now`;
}
только он не работает если его запускать cron-ом!
Код: Выделить всё
/usr/local/crons/>tail -f /var/log/cron
Apr 8 10:50:00 myproxy /usr/sbin/cron[1538]: (root) CMD (/usr/local/crons/shutdown.pl)
Apr 8 10:50:15 myproxy cron[1536]: (root) MAIL (mailed 15 bytes of output but got status 0x004e )
Apr 8 10:55:00 myproxy /usr/sbin/cron[1546]: (operator) CMD (/usr/libexec/save-entropy)
Apr 8 10:55:00 myproxy /usr/sbin/cron[1548]: (root) CMD (/usr/local/crons/shutdown.pl)
Apr 8 10:55:00 myproxy /usr/sbin/cron[1547]: (root) CMD (/usr/libexec/atrun)
Apr 8 10:55:15 myproxy cron[1545]: (root) MAIL (mailed 15 bytes of output but got status 0x004e )
Apr 8 11:00:00 myproxy /usr/sbin/cron[1568]: (root) CMD (newsyslog)
Apr 8 11:00:00 myproxy /usr/sbin/cron[1569]: (operator) CMD (/usr/libexec/save-entropy)
Apr 8 11:00:00 myproxy /usr/sbin/cron[1571]: (root) CMD (/usr/libexec/atrun)
Apr 8 11:00:00 myproxy /usr/sbin/cron[1572]: (root) CMD (/usr/local/crons/shutdown.pl)
Apr 8 11:00:15 myproxy cron[1570]: (root) MAIL (mailed 15 bytes of output but got status 0x004e )
KlaccuK
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Непрочитанное сообщение
skeletor » 2009-04-08 10:32:27
А вы уверенны, что скрипт отрабатывает? Отдебажте его, например, так
Код: Выделить всё
#!/usr/bin/perl
use Net::Ping;
#################################################
my $host = '192.168.0.8'; # host to ping
my $pings = 5; # number of pings to send
#################################################
my $count = 0; # number of received pings (DO NOT EDIT)
$p = Net::Ping->new("icmp");
for(my $i = 0; $i < $pings; $i++)
{
$count++ if($p->ping($host, 2));
sleep(1);
}
$p->close();
print "count = $count";
#if($count){
# print "Pings sent/rcvd $pings/$count\nHost is reacheble. Doing nothing...\n"; }else{
# print "shutdown -p now";
# #uncomment next string to make actual shutdown
# `shutdown -p now`;
#}
и попробуйте его запустить, 2 раза: первый, когда сеть доступна, и второй - когда нет. Сравните выводимые значения. Во втором случае должен быть 0.
Да, и ещё, возможно интервал в 1 секунду слишком мал, попробуйте сделать 2-3.
skeletor
-
KlaccuK
- рядовой
- Сообщения: 16
- Зарегистрирован: 2008-02-24 21:37:57
Непрочитанное сообщение
KlaccuK » 2009-04-08 10:37:59
skeletor писал(а):А вы уверенны, что скрипт отрабатывает? Отдебажте его, например, так
Код: Выделить всё
#!/usr/bin/perl
use Net::Ping;
#################################################
my $host = '192.168.0.8'; # host to ping
my $pings = 5; # number of pings to send
#################################################
my $count = 0; # number of received pings (DO NOT EDIT)
$p = Net::Ping->new("icmp");
for(my $i = 0; $i < $pings; $i++)
{
$count++ if($p->ping($host, 2));
sleep(1);
}
$p->close();
print "count = $count";
#if($count){
# print "Pings sent/rcvd $pings/$count\nHost is reacheble. Doing nothing...\n"; }else{
# print "shutdown -p now";
# #uncomment next string to make actual shutdown
# `shutdown -p now`;
#}
и попробуйте его запустить, 2 раза: первый, когда сеть доступна, и второй - когда нет. Сравните выводимые значения. Во втором случае должен быть не 0.
Да, и ещё, возможно интервал в 1 секунду слишком мал, попробуйте сделать 2-3.
когда руками стартуешь ./shutdown.pl, работает)))) проверял.
KlaccuK
-
Sadok123
- сержант
- Сообщения: 179
- Зарегистрирован: 2008-09-04 10:59:32
Sadok123
-
skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Непрочитанное сообщение
skeletor » 2009-04-08 11:59:21
Пропишите полный путь здесь
к shutdown.
И вообще, лучше когда что-то пишешь в крон, писать с полными путями при обращении ко всем файлам.
skeletor
-
KlaccuK
- рядовой
- Сообщения: 16
- Зарегистрирован: 2008-02-24 21:37:57
Непрочитанное сообщение
KlaccuK » 2009-04-08 12:26:46
всем thx

посмотрел что выдает cron. > /tmp/cron
и тоже понял))) и про $PATH вспомнил)))
KlaccuK