Что нового

Мониторинг серверов

gringo

Новичок
Сообщения
5
Репутация
0
Доброго дня всем форумчанам, очень нужна ваша помощь. Нужен скрипт мониторинга нескольких серверов, т.е. чтобы скрипт создавал соединение допустим по 21 порту к серверам и соединение было активным бесконечно долго, пока есть связь до серверов. Если связь (коннект по порту) с каким либо сервером пропадает, отписывал это в лог, и периодически проверял, а не появилась ли связь, если связь появилась снова отписывал в лог. Понимаю, что хочу возможно слишком много и сразу, поэтому готов на разумную оплату трудов человека, который мне сможет помочь.
По сути нужно что-то похожее обсуждается в этой теме:
http://autoit-script.ru/index.php/topic,2836.new.html#new
 

HungryDwarf

Новичок
Сообщения
35
Репутация
3
самому совсем влом хелп почитать? =)
берешь код из ссыли и вместо мессагбокса открываешь файл log.txt и пишешь туда текст =) несложно, вроде =)
 
Автор
G

gringo

Новичок
Сообщения
5
Репутация
0
Ну может сначала разобраться о чем речь, а затем говорить о том, что все просто как два пальца об асфальт, нет?
То, что требуется, код из ссылки не сделает даже если заменить все MsgBox на планете.
При условии, что TCPTimeout обрабатывается неверно, задача не реализуема на Autoit.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
gringo
А просто пинг серверов не вариант?

gringo [?]
задача не реализуема на Autoit
AutoIt - это удачная оболочка для WinApi, можено брать MSDN и шерстить глубже.
 
Автор
G

gringo

Новичок
Сообщения
5
Репутация
0
`p r o x y сказал(а):
gringo
А просто пинг серверов не вариант?
Пока задача перешла из состояния оперативной, в состояние вялотекущей. Просто пинг не вариант, да и не стал бы беспокоить форум если-б его было достаточно.
Скорее всего нужно два компонента, клиентская часть и серверная. Клиентская запускается на том компьютере который нужно мониторить, открывает порт и ждет данных. Серверная на том компьютере, с какого нужно мониторить. Серверная часть коннектится к клиенту и начинает слать данные по открытому соединению с небольшой скоростью пусть 1кб/с (должна быть возможность вручную в скипте, или еще где указывать таймаут для соединения). Если происходит сбой в сети (таймаут превышает указанную величину), то программа отписывает в лог, и серверная часть начинает с какой-то периодичностью пытаться вновь соединиться с клиентом, соединилась, отписала в лог. Что еще сказать, клиентских компьютеров порядка 40.
Зачем такая фигня нужна? Есть капризное приложение работающее по TCP для которого как раз и критичен timeout соединения.
В опциях пинг большинства ОС есть параметр timeout, но отсылка пакетов как правило через промежутки времени, а между периодами как-раз и может "пропадать связь" на очень небольшой промежуток времени. Есть еще конечно и pathping но тоже немного "не то". Ну как-то так.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
В принципе, оба варианты осуществимы.

Клиент проверяет доступ к серверу на определенный порт:
Код:
Global	$sServerIP 		= '192.168.1.3'
Global	$iServerPort 	= '5900'
Global	$iCountCheck	= 10
Global	$iOftenCheck	= 500; ms	

TCPStartUp()

Local $iCountCheckTmp=$iCountCheck, $hSocket, $sResult='', $sStatus
Do
	TCPConnect($sServerIP, $iServerPort)
	
	$sStatus = ' Ok'
	If @error Then $sStatus = ' Off'
	
	$sResult &= 'Check '& ($iCountCheck-$iCountCheckTmp+1) & $sStatus &@CRLF
	ToolTip($sResult, 200, 300, $sServerIP &':'& $iServerPort)
	
	$iCountCheckTmp -= 1
	Sleep($iOftenCheck)
	
Until $iCountCheckTmp < 1

TCPShutdown()


Клиент серверный вариант не сложней. Примеры в справке по функциям:
Код:
TCPAccept 
TCPConnect


И само собой, порты должны быть открыты 6а выход/вход.
 
Автор
G

gringo

Новичок
Сообщения
5
Репутация
0
Скрипт запустил очень похоже на правду. Как сделаю скрипт выложу в теме, `p r o x y спасибо за подсказку, всех с наступающим.
 
Верх