Демон который контроллирует другие проги и запускает

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
stomotolog
рядовой
Сообщения: 29
Зарегистрирован: 2007-07-27 8:57:57
Откуда: Италия

Демон который контроллирует другие проги и запускает

Непрочитанное сообщение stomotolog » 2007-08-01 9:43:53

Доброый день!
Вот пришлось написать Демон который контроллирует другие проги и запускает если их срубило.
А то бывало отвалиться ночью почтарь непонятно покаким причинам...
Мож кому пригодиться :-)
Плюс бэкап CommuniGate сервера пришлось останавливать его чтобы забэкапить!

Код: Выделить всё

#!/usr/bin/perl -w

#use strict;
use IO::File;
use Time::localtime;
use Proc::Daemon;
Proc::Daemon::Init;

$^X='ATRET';
$0='DAEMON';

while(1){
	$tm=localtime;
	($DAY, $MONTH, $YEAR, $HOUR, $MINUTES, $SECONDS) = ($tm->mday,$tm->mon+1,$tm->year+1900,$tm->hour,$tm->min,$tm->sec);
	if($HOUR==0 or $HOUR==1 or $HOUR==3 or $HOUR==4 or $HOUR==5 or $HOUR==6 or $HOUR==7 or $HOUR==8 or $HOUR==9 or $HOUR==10 or $HOUR==11 or $HOUR==12 or $HOUR==13 or $HOUR==14 or $HOUR==15 or $HOUR==16 or $HOUR==17 or $HOUR==18 or $HOUR==19 or $HOUR==20 or $HOUR==21 or $HOUR==22 or $HOUR==23){
#	open(PROBA_TIME, ">>/usr/local/scripts/SBORKA_DEMONA/MAIN/proba_time");
    #	print PROBA_TIME "SEiCHAS $HOUR chasov!!! I $MINUTES minut"."\n";
#	close (PROBA_TIME);	    
    	$processes=`ps -auxw > /usr/local/scripts/SBORKA_DEMONA/MAIN/top.top`;
	open(MYFILE,"/usr/local/scripts/SBORKA_DEMONA/MAIN/top.top") or die "Error!!!:$!";
	$id_life=0;
	$id_lifw_httpd=0;
	$id_life_mysql=0;
	$id_life_cg=0;
#	$tm=localtime;
#	($DAY, $MONTH, $YEAR, $HOUR, $MINUTES, $SECONDS) = ($tm->mday,$tm->mon+1,$tm->year+1900,$tm->hour,$tm->min,$tm->sec);
#	open(PROBA_TIME, ">>/usr/local/scripts/SBORKA_DEMONA/MAIN/proba_time");
#	printf PROBA_TIME "$DAY-%02d-$YEAR $HOUR:$MINUTES:%02d"."\n",$MONTH+1,$SECONDS;
#	close (PROBA_TIME);
	    while(<MYFILE>){
#				$processes=`ps -auxw > /usr/local/scripts/DAEMON/top.top`;
				chomp $_;
		#		open(VIVOD,">>/usr/local/scripts/SBORKA_DEMONA/MAIN/rabota.tmp") or die "Error!!!:$!";
#				@massiv=split(/ /,$_);
#				$massiv2=join(" ",$_);
				if($_=~m/\/usr\/local\/libexec\/vsftpd/)
					    {
#					    open(VIVOD,">>/usr/local/scripts/DAEMON/rabota.tmp") or die "Error!!!:$!";
		#			    print VIVOD "RABOTAET!!!"."\n";
					    $id_life=1;
#					    close (VIVOD);
					    }	
#				else {
#					$id_life=0;
#					}
				#Apache
				if($_=~m/\/usr\/local\/sbin\/httpd/)
				    {
				    $id_lifw_httpd=1;
#				    print VIVOD "rabotaet APACHE"."\n";
				    }
					
				#MySQL
				if($_=~m/\/usr\/local\/libexec\/mysqld/)
					{
					$id_life_mysql=1;
		#			print VIVOD "MYSQL!!! RABOTAET!!!"."\n";
					}
				#CommuniGate
                                if($_=~m/\/usr\/local\/sbin\/CommuniGate\/CGServer/)
                                                    {
                                                    $id_life_cg=1;
		#				    print VIVOD "CommuniGate!!! RABOTAET!!!"."\n";
                                                    }
#					else{
#					    system("/usr/local/etc/rc.d/mysql-server.sh start");
#					    print "MYSQL!!! SRUBILO!!! SRUBILO!!! SRUBILO!!!"."\n";
#					    }
				
				}
#				print "$id_life"."\n";
				close (MYFILE);
				if($id_life==0){
						$zapusk=`/usr/local/etc/rc.d/vsftpd.sh start`;
		#				print VIVOD "SRUBILO"."\n";
						}
				if($id_lifw_httpd==0){
                                                   system("/usr/local/etc/rc.d/apache2.sh start");
                                                   }
				if($id_life_mysql==0){
						    system("/usr/local/etc/rc.d/mysql-server.sh start");
						    }
				if($id_life_cg==0){
                                                    system("/usr/local/etc/rc.d/CommuniGate.sh start");
                                                    }
				
				close (VIVOD);
#				print "$massiv2"."\n";
#				print "NAchalo\n";
#				print "$massiv[2]"."\n";
#				print "@massiv2"."\n";
#				<>
	
			}
		
			if($HOUR==2 and $MINUTES==30){
				    system("/usr/local/etc/rc.d/apache.sh stop");
				    system("/usr/local/etc/rc.d/mysql-server.sh stop");
				    system("/usr/local/etc/rc.d/CommuniGate.sh stop");
				    system("tar cf - /usr/local/www/data-dist/ | gzip -9c > /remote/backup_apache.tar.gz");
				    system("tar cf - /var/db/mysql/ | gzip -9c > /remote/backup_mysql.tar.gz");
				    system("tar cf - /var/CommuniGate/ | gzip -9c > /remote/backup_CG.tar.gz");
				    open(PROBA_TIME, ">>/usr/local/scripts/SBORKA_DEMONA/MAIN/proba_time");
				    print PROBA_TIME "BACKUP POSHEL!!!"."\n";
				    close (PROBA_TIME);
				    system("/usr/local/etc/rc.d/apache.sh start");
				    system("/usr/local/etc/rc.d/mysql-server.sh start");
				    system("/usr/local/etc/rc.d/CommuniGate.sh start");
				    }
	sleep (10);
	}

#<>


С Уважением!
Если что непонятно спрашивайте!
Много демонов написал :-)
Кощеи бессмертны - пока Иванушки дураки!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Демон который контроллирует другие проги и запускае

Непрочитанное сообщение Alex Keda » 2007-08-01 9:58:42

Убей их всех! Бог потом рассортирует...

Аватара пользователя
stomotolog
рядовой
Сообщения: 29
Зарегистрирован: 2007-07-27 8:57:57
Откуда: Италия

Re: Демон который контроллирует другие проги и запускае

Непрочитанное сообщение stomotolog » 2007-08-01 10:03:49

Добый день!
Видимо получается так!
:-)
Незнал что есть такая прорамма...
Извините
С Уважением!
Кощеи бессмертны - пока Иванушки дураки!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Демон который контроллирует другие проги и запускае

Непрочитанное сообщение Alex Keda » 2007-08-01 10:37:30

всё равно не зря - сам разобрался и может код кому пригодится как образец
Убей их всех! Бог потом рассортирует...

Аватара пользователя
stomotolog
рядовой
Сообщения: 29
Зарегистрирован: 2007-07-27 8:57:57
Откуда: Италия

Re: Демон который контроллирует другие проги и запускае

Непрочитанное сообщение stomotolog » 2007-08-01 11:06:30

Добрый день!
Спасибо!
А тогда вопросик может я зря следующего демноа строгаю..
Задачка у меня такая: На клиентах прописаны ИП статически, но есть пользователи которые имеют права админа, так вот они периодически меняют ИП а мне необходимо знать как и когда кто сменил и на какой. Сейчас уже написал серверную часть (FreeBSD) и клиентскую (под ВЫНЬ скомпил perl2exe). Так вот демон принимает соединения от компов в сети которые ему посылают свой логин и ИП адрес. Сверятся буду с созданной базой данных ИП адресов<->Имен компьютеров и если изменилась нежели в эталонной тогда посылаю письмо админу.
Сейчас тестирую... может зря?
С Уважением!
Кощеи бессмертны - пока Иванушки дураки!


Аватара пользователя
stomotolog
рядовой
Сообщения: 29
Зарегистрирован: 2007-07-27 8:57:57
Откуда: Италия

Re: Демон который контроллирует другие проги и запускае

Непрочитанное сообщение stomotolog » 2007-08-01 13:42:34

Добрый день!
ДА уже почти что всё готово.. Тест пройден клиент и сервер посылают друг другу сообщения о имени компа пользователе и ИП адресе..
Осталось код наваять сравнения ИП и ИМЯ компа с ЭТАЛОННОЙ БАЗОЙ.
Скоро всё размещу.
С Уважением!
Кощеи бессмертны - пока Иванушки дураки!

100kg
ст. сержант
Сообщения: 393
Зарегистрирован: 2006-05-18 14:01:32

Re: Демон который контроллирует другие проги и запускает ?

Непрочитанное сообщение 100kg » 2007-09-16 20:44:47

огоого какой воспитанный стоматолог!! Добрый день! С Уважением!

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Демон который контроллирует другие проги и запускае

Непрочитанное сообщение dikens3 » 2007-09-16 21:17:08

stomotolog писал(а):Добрый день!
Спасибо!
А тогда вопросик может я зря следующего демноа строгаю..
Задачка у меня такая: На клиентах прописаны ИП статически, но есть пользователи которые имеют права админа, так вот они периодически меняют ИП а мне необходимо знать как и когда кто сменил и на какой. Сейчас уже написал серверную часть (FreeBSD) и клиентскую (под ВЫНЬ скомпил perl2exe). Так вот демон принимает соединения от компов в сети которые ему посылают свой логин и ИП адрес. Сверятся буду с созданной базой данных ИП адресов<->Имен компьютеров и если изменилась нежели в эталонной тогда посылаю письмо админу.
Сейчас тестирую... может зря?
С Уважением!
Давно дело было, проехали уже, но arpwatch умеет следить за IP=MAC
И отправлять письма админу.

А по задаче вообще, то я бы не придерживался правил давать по голове за всякую фигню, лучше не позволять (программными средствами) использовать данные не по назначению (изменение ИП Адреса и т.п.).
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Демон который контроллирует другие проги и запускае

Непрочитанное сообщение Alex Keda » 2007-09-16 22:41:15

stomotolog писал(а):Добрый день!
Спасибо!
А тогда вопросик может я зря следующего демноа строгаю..
Задачка у меня такая: На клиентах прописаны ИП статически, но есть пользователи которые имеют права админа, так вот они периодически меняют ИП а мне необходимо знать как и когда кто сменил и на какой. Сейчас уже написал серверную часть (FreeBSD) и клиентскую (под ВЫНЬ скомпил perl2exe). Так вот демон принимает соединения от компов в сети которые ему посылают свой логин и ИП адрес. Сверятся буду с созданной базой данных ИП адресов<->Имен компьютеров и если изменилась нежели в эталонной тогда посылаю письмо админу.
Сейчас тестирую... может зря?
С Уважением!
а серверная часть, под фрёй, БД какиенить поддерживает?
мусю например?
Убей их всех! Бог потом рассортирует...