Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Автоматизация старт/стоп при неудачном ping-овании

Ответить
Настройки темы
[решено] Автоматизация старт/стоп при неудачном ping-овании

Аватара для nyevgen

Пользователь


Сообщения: 101
Благодарности: 6


Конфигурация

Профиль | Отправить PM | Цитировать


Есть ADSL модем. Входящая скорость 2мб/сек. К модему подключены 2 машины. Программно на обоих машинах скорость ограничевается по 1мб/сек. Как реализовать следующее:
1. Запускается скрипт через автозагрузку и все время висит в трее;
2. Постоянно опрашивает вторую машину есть ли она в сети или нет, через команду ping;
3. Если ЕСТЬ в сети машины - проверяем, запущена ли служба, если нет - запускаем;
4. Если НЕТ в сети машина - проверяем, остановлена ли служба, если запущена - останавливаем.
Файервол не стоит ни на одной машине.

Помогите пожалуйста! Я уже весь интернет перерыл, ничего такого не нашел, в Autoit! не очень силен (автоматизировал только автоустановку приложений), но если подскажите может сам сделаю. Зараннее огромное спасибо!

Отправлено: 14:21, 02-06-2010

 

Аватара для nyevgen

Пользователь


Сообщения: 101
Благодарности: 6

Профиль | Отправить 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить 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


Аватара для nyevgen

Пользователь


Сообщения: 101
Благодарности: 6

Профиль | Отправить PM | Цитировать


FlatX007, ОГРОМНОЕ СПАСИБО!!!

-------
Давно живу, много повидал. Удивляться не устал.


Отправлено: 17:11, 08-06-2010 | #13


Аватара для nyevgen

Пользователь


Сообщения: 101
Благодарности: 6

Профиль | Отправить PM | Цитировать


А как все это можно организовать в Windows Seven? Может каким-то иным способом можно. И еще (по возможности), как сделать чтоб пинговало несколько IP-адресов?

-------
Давно живу, много повидал. Удивляться не устал.


Отправлено: 23:12, 30-09-2010 | #14


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


А я и придумавал это в Windows Seven

Отправлено: 23:28, 30-09-2010 | #15


Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
придумавал это »
А как еще можно в этот скрипт добавить порт для проверки?

Отправлено: 08:15, 09-10-2010 | #16


Аватара для nyevgen

Пользователь


Сообщения: 101
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата FlatX007:
А я и придумавал это в Windows Seven »
Мой код скрипта
#cs ----------------------------------------------------------------------------
;AutoIt Version: 3.3.6.1

;Описание скрипта:
;Запускается скрипт и мониторит сетевой ресурс на наличие его в сети
;Если сетевой ресурс пропадает из сети скрипт останавливает службу TMetr
;Как только сетевой ресурс появляется в сети происходит запуск службы TMetr
#ce ----------------------------------------------------------------------------

;предотвращение возможности множественного запуска скрипта
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

;объявление переменных для реестра
Global $i = 0
Global $sRegRun = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
;проверка реестра и запись себя в автозагрузку
If RegRead($sRegRun, @ScriptName) = "" Or RegRead($sRegRun, @ScriptName) <> @ScriptFullPath Then
RegWrite($sRegRun, @ScriptName, "REG_SZ", @ScriptFullPath)
EndIf

;нестандартное меню скрипта
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("192.168.1.2") = 0 Then ;если машины нет в сети...
TraySetIcon("shell32.dll",338);меняем иконку
TraySetToolTip('Ping My Lan - Юзера нет в сети');всплывающая подсказка при наведении мыши
If ProcessExists("TrafSvc.exe") Then Run(@ComSpec & " /C sc stop TrafSvc", "", @SW_HIDE);проверяем наличие запущенного процесса службы TMetr, если есть - останавливаем службу.
Else ;если машина есть в сети...
TraySetIcon("shell32.dll",239);меняем иконку
TraySetToolTip('Ping My Lan - Юзер в сети');всплывающая подсказка при наведении мыши
If Not ProcessExists("TrafSvc.exe") Then Run(@ComSpec & " /C sc start TrafSvc", "", @SW_HIDE);проверяем наличие запущенного процесса службы TMetr, если нет - запускаем службу.
EndIf
$i = 0 ;обнуляем счетчик
EndIf
Sleep(10)
WEnd

У меня на Windows Seven службу не останавливает. Запускается, отображается в трее, меняется значок при "есть/нет юзера", но служба не останавливатся. Думал может служба в семерке по другому называется, проверил так же. Но не работает скрипт поностью.

Разобрался. От имени администратора нужно было запускать.

Последний раз редактировалось nyevgen, 23-04-2011 в 17:07. Причина: Сам ответил на свой вопрос.


Отправлено: 19:22, 13-10-2010 | #17


Аватара для nyevgen

Пользователь


Сообщения: 101
Благодарности: 6

Профиль | Отправить PM | Цитировать


А не поможете еще в одном деле? В
этот
Код: Выделить весь код
;предотвращение возможности множественного запуска скрипта
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

;объявление переменных для реестра
Global $i = 0
Global $sRegRun = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
;проверка реестра и запись себя в автозагрузку
If RegRead($sRegRun, @ScriptName) = "" Or RegRead($sRegRun, @ScriptName) <> @ScriptFullPath Then
RegWrite($sRegRun, @ScriptName, "REG_SZ", @ScriptFullPath)
EndIf

;нестандартное меню скрипта
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 = 500 Then ;если прошло 5 секунд...
    If Ping("192.168.1.2") = 0 Then ;если машины нет в сети...
	TraySetIcon("shell32.dll",338);меняем иконку
	TraySetToolTip('Ping My Lan - Юзера нет в сети');всплывающая подсказка при наведении мыши
	If ProcessExists("TrafSvc.exe") Then Run(@ComSpec & " /C sc stop TrafSvc", "", @SW_HIDE);проверяем наличие запущенного процесса службы TMetr, если есть - останавливаем службу.
	Else ;если машина есть в сети...
	TraySetIcon("shell32.dll",239);меняем иконку
	TraySetToolTip('Ping My Lan - Юзер в сети');всплывающая подсказка при наведении мыши
    If Not ProcessExists("TrafSvc.exe") Then Run(@ComSpec & " /C sc start TrafSvc", "", @SW_HIDE);проверяем наличие запущенного процесса службы TMetr, если нет - запускаем службу.
	EndIf
    $i = 0 ;обнуляем счетчик
EndIf
    Sleep(5)
WEnd
скрипт добавить следующее:
- пингование IP адресов от 1 до 10 (т.е. 192.168.1.1, 192.168.1.2 и т.д.)
- в случае удачного пингования ХОТЯ БЫ ОДНОГО IP адреса скрипт останавливает службу
- в случае НЕудачного пинга ни от одной машины служба запускалась

ПОМОГИТЕ, ПОЖАЛУЙСТА!!!

Отправлено: 17:06, 23-04-2011 | #18



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Автоматизация старт/стоп при неудачном ping-овании

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Почта - стоп спам 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




 
Переход