|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Автоматизация старт/стоп при неудачном ping-овании |
|
|
[решено] Автоматизация старт/стоп при неудачном ping-овании
|
|
Пользователь Сообщения: 101 |
Есть ADSL модем. Входящая скорость 2мб/сек. К модему подключены 2 машины. Программно на обоих машинах скорость ограничевается по 1мб/сек. Как реализовать следующее:
1. Запускается скрипт через автозагрузку и все время висит в трее; 2. Постоянно опрашивает вторую машину есть ли она в сети или нет, через команду ping; 3. Если ЕСТЬ в сети машины - проверяем, запущена ли служба, если нет - запускаем; 4. Если НЕТ в сети машина - проверяем, остановлена ли служба, если запущена - останавливаем. Файервол не стоит ни на одной машине. Помогите пожалуйста! Я уже весь интернет перерыл, ничего такого не нашел, в Autoit! не очень силен (автоматизировал только автоустановку приложений), но если подскажите может сам сделаю. Зараннее огромное спасибо! |
|
|
Отправлено: 14:21, 02-06-2010 |
|
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Наверняка кому-то еще пригодится. Нужно совместить это
;нестандартное меню скрипта
Opt("TrayMenuMode", 1)
;меню скрипта - кнопка Выход
Global $exititem = TrayCreateItem("Выход")
TraySetState()
TraySetIcon("shell32.dll",156)
;всплывающая подсказка при наведении мыши
TraySetToolTip('Ping My Lan')
While 1
$msg = TrayGetMsg()
Select
Case $msg = $exititem
Exit
EndSelect
;цикл работы скрипта
$i += 1
If $i = 1000 Then ;если прошло 10 секунд...
If Ping("127.0.0.1") = 0 Then ;если машины нет в сети...
TraySetIcon("shell32.dll",338);меняем иконку
TraySetToolTip('Ping My Lan - Юзера нет в сети');всплывающая подсказка при наведении мыши
If ProcessExists("ваш процесс") Then Run(@ComSpec & " /C sc stop служба", "", @SW_HIDE);проверяем наличие запущенного процесса службы "ваша служба", если есть - останавливаем службу.
Else ;если машина есть в сети...
TraySetIcon("shell32.dll",239);меняем иконку
TraySetToolTip('Ping My Lan - Юзер в сети');всплывающая подсказка при наведении мыши
If Not ProcessExists("ваш процесс") Then Run(@ComSpec & " /C sc start служба", "", @SW_HIDE);проверяем наличие запущенного процесса службы "ваша служба", если нет - запускаем службу.
EndIf
$i = 0 ;обнуляем счетчик
EndIf
Sleep(10)
WEnd
#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <GuiIPAddress.au3>
#include <WindowsConstants.au3>
Global $nForm, $hIPAddress, $sLastIP
Global $START_IP = "127.0.0.1"
Opt("TrayMenuMode", 1)
$hIp = TrayCreateItem("IP Ping")
TrayCreateItem("")
$hExit = TrayCreateItem("Exit")
TraySetState()
$start = 0
While 1
$msg = TrayGetMsg()
Switch $msg
Case $hIp
TrayItemSetState($hIp, $TRAY_UNCHECKED + $TRAY_DISABLE)
TrayItemSetState($hExit, $TRAY_DISABLE)
$sIP = _GuiCreate()
If Not (@error) Then MsgBox(0, "", 'IP - ' & $sIP)
TrayItemSetState($hIp, $TRAY_ENABLE)
TrayItemSetState($hExit, $TRAY_ENABLE)
Case $hExit
Exit
EndSwitch
WEnd
Func _GuiCreate()
$nForm = GUICreate("", 223, 102, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
$hIPAddress = _GUICtrlIpAddress_Create($nForm, 24, 16, 162, 21)
If Not $sLastIP Then
_GUICtrlIpAddress_Set($hIPAddress, $START_IP)
Else
_GUICtrlIpAddress_Set($hIPAddress, $sLastIP)
EndIf
$Button1 = GUICtrlCreateButton("Ok", 144, 64, 43, 25)
$Button2 = GUICtrlCreateButton("Cancel", 64, 64, 75, 25)
GUISetState(@SW_SHOW, $nForm)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button2
GUIDelete($nForm)
Return SetError(1, 0, 0)
Case $Button1
$sLastIP = _GUICtrlIpAddress_Get($hIPAddress)
GUIDelete($nForm)
Return $sLastIP
EndSwitch
WEnd
EndFunc ;==>_GuiCreate
Нужно следующее: - есть скрипт, пингует - откл/вкл службу. как сделать чтоб еще в контекстном меню был пункт - IP - выскакивало окошко где вводится другой ip для последующего пингования и откл/вкл службы соотвественно. Зараннее спасибо!!! |
|
Отправлено: 22:35, 05-06-2010 | #11 |
|
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать #include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <GuiIPAddress.au3>
#include <WindowsConstants.au3>
Global $nForm, $hIPAddress, $sLastIP, $Timer
Global $START_IP = "127.0.0.1"
Global $WAITING = 10
Global $PROCESS_WELL_PC = 'pr_1.exe'
Global $PROCESS_BAD_PC = 'pr_2.exe'
Global $GLOBAL_IP = $START_IP
Opt("TrayMenuMode", 1)
$Timer = TimerInit()
$hIp = TrayCreateItem("IP Ping")
TrayCreateItem("")
$hExit = TrayCreateItem("Exit")
TraySetState()
TraySetIcon("shell32.dll", 156)
While 1
$msg = TrayGetMsg()
Switch $msg
Case $hIp
TrayItemSetState($hIp, $TRAY_UNCHECKED + $TRAY_DISABLE)
TrayItemSetState($hExit, $TRAY_DISABLE)
$sIP = _GuiCreate()
If Not (@error) Then $GLOBAL_IP = $sIP
TrayItemSetState($hIp, $TRAY_ENABLE)
TrayItemSetState($hExit, $TRAY_ENABLE)
Case $hExit
Exit
Case Else
If (Round(TimerDiff($Timer) / 1000)) > $WAITING Then
ConsoleWrite('ping - ' & $GLOBAL_IP & @CRLF)
$Ping = Ping($GLOBAL_IP)
$Error = @error
$Hint = _ErrorPing($Error)
If $Ping = 0 Then
_IpPingBadPC($Hint)
Else
_IpPingWellPC($Hint)
EndIf
$Timer = TimerInit()
EndIf
EndSwitch
WEnd
Func _IpPingWellPC($Hint = '')
TraySetIcon("shell32.dll", 239)
TraySetToolTip($Hint)
If Not ProcessExists($PROCESS_WELL_PC) Then Run(@ComSpec & " /C sc start служба", "", @SW_HIDE)
EndFunc ;==>_IpPingWellPC
Func _IpPingBadPC($Hint = '') ;если машины нет в сети...
TraySetIcon("shell32.dll", 338)
TraySetToolTip($Hint)
If ProcessExists($PROCESS_BAD_PC) Then Run(@ComSpec & " /C sc stop служба", "", @SW_HIDE)
EndFunc ;==>_IpPingBadPC
Func _ErrorPing($Error = 0)
Switch $Error
Case 1
Return "Xост работает в автономном режиме"
Case 2
Return "Xост недостижим"
Case 3
Return "Xост неверно указан"
Case 4
Return "Другие ошибки"
Case Else
Return "Xост Онлайн"
EndSwitch
EndFunc ;==>_ErrorPing
Func _GuiCreate()
$nForm = GUICreate("", 223, 102, -1, -1, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
$hIPAddress = _GUICtrlIpAddress_Create($nForm, 24, 16, 162, 21)
If Not $sLastIP Then
_GUICtrlIpAddress_Set($hIPAddress, $START_IP)
Else
_GUICtrlIpAddress_Set($hIPAddress, $sLastIP)
EndIf
$Button1 = GUICtrlCreateButton("Ok", 144, 64, 43, 25)
$Button2 = GUICtrlCreateButton("Cancel", 64, 64, 75, 25)
GUISetState(@SW_SHOW, $nForm)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Button2
GUIDelete($nForm)
Return SetError(1, 0, 0)
Case $Button1
$sLastIP = _GUICtrlIpAddress_Get($hIPAddress)
GUIDelete($nForm)
Return $sLastIP
EndSwitch
WEnd
EndFunc ;==>_GuiCreate
|
|
Отправлено: 16:38, 07-06-2010 | #12 |
|
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать FlatX007, ОГРОМНОЕ СПАСИБО!!!
|
|
------- Отправлено: 17:11, 08-06-2010 | #13 |
|
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать А как все это можно организовать в Windows Seven? Может каким-то иным способом можно. И еще (по возможности), как сделать чтоб пинговало несколько IP-адресов?
|
|
------- Отправлено: 23:12, 30-09-2010 | #14 |
|
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать А я и придумавал это в Windows Seven
![]() |
|
Отправлено: 23:28, 30-09-2010 | #15 |
|
Новый участник Сообщения: 26
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
|
|
|
Отправлено: 08:15, 09-10-2010 | #16 |
|
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать Цитата FlatX007:
У меня на Windows Seven службу не останавливает. Запускается, отображается в трее, меняется значок при "есть/нет юзера", но служба не останавливатся. Думал может служба в семерке по другому называется, проверил так же. Но не работает скрипт поностью. Разобрался. От имени администратора нужно было запускать. |
|
|
Последний раз редактировалось nyevgen, 23-04-2011 в 17:07. Причина: Сам ответил на свой вопрос. Отправлено: 19:22, 13-10-2010 | #17 |
|
Пользователь Сообщения: 101
|
Профиль | Отправить PM | Цитировать А не поможете еще в одном деле? В скрипт добавить следующее:
- пингование IP адресов от 1 до 10 (т.е. 192.168.1.1, 192.168.1.2 и т.д.) - в случае удачного пингования ХОТЯ БЫ ОДНОГО IP адреса скрипт останавливает службу - в случае НЕудачного пинга ни от одной машины служба запускалась ПОМОГИТЕ, ПОЖАЛУЙСТА!!! |
|
Отправлено: 17:06, 23-04-2011 | #18 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Почта - стоп спам | rufat_4 | Программное обеспечение Windows | 10 | 15-11-2014 16:00 | |
| БП и ИБП - комп не стартует при повторном нажатии кнопки старт | naka | Прочее железо | 5 | 19-07-2009 09:16 | |
| Разное - Автоматический старт установки Office 2007 при загрузке системы | SimPbl4 | Microsoft Windows Vista | 1 | 01-03-2008 21:23 | |
| Автоматизация кодирования при помощи Avisynth | Igor_I | Видео и аудио: обработка и кодирование | 1 | 14-04-2007 21:23 | |
| Старт MSTSC при входе в систему . | Jhakal | Microsoft Windows 2000/XP | 3 | 03-11-2006 03:54 | |
|