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

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

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

Аватара для nyevgen

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


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


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

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


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

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

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

 

Ветеран


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

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


nyevgen, что изменилось за полдня по сравнению с этим?

Отправлено: 16:55, 02-06-2010 | #2



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

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


Аватара для madmasles

Ветеран


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

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


nyevgen,
Попробуйте так, у меня работает. Можно поменять
Код: Выделить весь код
If @IPAddress2 = "0.0.0.0" Then
на
Код: Выделить весь код
If Ping("Вторая машина") = 0 Then
Код: Выделить весь код
#NoTrayIcon

Opt("TrayMenuMode", 1)

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

Global $exititem = TrayCreateItem("Выход")
TrayCreateItem("")
TraySetState()

While 1
    $msg = TrayGetMsg()
    Select
        Case $msg = $exititem
            Exit
    EndSelect

    $i += 1
    If $i = 1000 Then ;прошло 10 секунд
        If @IPAddress2 = "0.0.0.0" Then ;нет второй машины в сети.
            If ProcessExists("Ваш процесс.exe") Then ProcessClose("Ваш процесс.exe");если есть процесс, то закрываем его.
        Else ;есть вторая машина в сети
            If Not ProcessExists("Ваш процесс.exe") Then Run("Путь к Вашему\Процессу\Ваш процесс.exe");если нет процесса, запускаем его.
            ;что у Вас за процесс, я не знаю, может он по другому запускается.
        EndIf
        $i = 0 ;обнуляем счетчик
    EndIf

    Sleep(10)
WEnd
Цитата Iska:
что изменилось за полдня по сравнению с этим?
Может nyevgen не на VBScript код хочет, а на AutoIt.

Последний раз редактировалось madmasles, 02-06-2010 в 17:45.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:33, 02-06-2010 | #3


Аватара для nyevgen

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


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

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


Цитата Iska:
nyevgen, что изменилось за полдня по сравнению с этим? »
На второй машине сидит пользователь, который вообще мало что в этом понимает. Я ему хочу собрать на Autoit!, чтоб был просто файл *.exe для автозагрузки и в трее будет отображаться. Да и мне удобнее - через radmin к нему зашел - проверил, без его ведома.

Цитата madmasles:
Попробуйте так, у меня работает. Можно поменять »
Спасибо. Попробую. Дело еще в том что она работает как служба, и если я убиваю процесс - исчезает только иконка в трее, а служба продолжает работать и ограничивать. Какой командой старт/запуск именно службы?

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


Отправлено: 10:34, 03-06-2010 | #4


Аватара для madmasles

Ветеран


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

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


nyevgen,
У меня так службы включаются - выключаются:
Код: Выделить весь код
; 1-й вариант:
Run(@ComSpec & " /C sc start служба", "", @SW_HIDE)
Run(@ComSpec & " /C sc stop служба", "", @SW_HIDE)
; 2-й вариант:
; если название службы из двух слов (с пробелом), то надо так ""Ваша служба""
RunWait(@ComSpec & " /C net start ""Ваша служба""", "", @SW_HIDE)
RunWait(@ComSpec & " /C net stop ""Ваша служба""", "", @SW_HIDE)
Если не будет работать из под пользователя не администратора, то можно службу на него перерегистрировать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:41, 03-06-2010 | #5


Аватара для nyevgen

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


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

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


Цитата madmasles:
If Ping("Вторая машина") = 0 Then »
вот этот вариант заработал.
Цитата madmasles:
У меня так службы включаются - выключаются: »
заработал первый вариант.

Все заработало! Спасибо огромное!

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


Отправлено: 14:40, 03-06-2010 | #6


Аватара для nyevgen

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


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

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


Можно еще вопросик. Контекстное меню сделать-сделал. Как сделать пункт "Ввод IP адреса" пингуемой машины так, чтобы выскакивало окошко с кнопками Ок и Отмена для ввода ip адреса?
Зараннее спасибо!

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


Отправлено: 18:34, 03-06-2010 | #7


Аватара для FlatX007

Ветеран


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

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


Код: Выделить весь код
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiIPAddress.au3>
#include <WindowsConstants.au3>

$nForm = GUICreate("", 207, 102, 731, 366)
$hIPAddress = _GUICtrlIpAddress_Create($nForm, 32, 8, 130, 21)
;~ _GUICtrlIpAddress_Set($hIPAddress, "0.0.0.0")
$Button1 = GUICtrlCreateButton("OK", 120, 56, 75, 25, 0)
$Button2 = GUICtrlCreateButton("Cancel", 32, 56, 75, 25, 0)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE, $Button2
            Exit
        Case $Button1
            MsgBox (4160, "Information", "IP Address: " & _GUICtrlIpAddress_Get($hIPAddress))
            Exit

    EndSwitch
WEnd

Отправлено: 18:42, 03-06-2010 | #8


Аватара для nyevgen

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


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

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


Подскажите, что я делаю не так??? Ну не силен я в этом. Нужно чтоб в контекстном меню был пункт "Смена IP" - это я сделал. А как сделать чтоб выскакивало "это самое окно" и потом вбивался новый IP в пинговании???

PHP код: Выделить весь код

;меню скрипта кнопка Выход и кнопка Смена IP

Global $exititem TrayCreateItem("Выход")
TraySetState()
TrayCreateItem("")
Global 
$nForm TrayCreateItem("Смена IP")
TraySetIcon("shell32.dll",156)

While 
1
    $msg 
TrayGetMsg()
    
Select
    
Case $msg $exititem
    
Exit
EndSelect

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiIPAddress.au3>
#include <WindowsConstants.au3>

$nForm GUICreate(""207102731366)
$hIPAddress _GUICtrlIpAddress_Create($nForm32813021)
_GUICtrlIpAddress_Set($hIPAddress"0.0.0.0")
$Button1 GUICtrlCreateButton("OK"1205675250)
$Button2 GUICtrlCreateButton("Cancel"325675250)
GUISetState(@SW_SHOW)

While 
2
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE$Button2
            
Exit
        Case 
$Button1
            MsgBox 
(4160"Information""IP Address: " _GUICtrlIpAddress_Get($hIPAddress))
            Exit
    EndSwitch 


Отправлено: 19:16, 03-06-2010 | #9


Аватара для FlatX007

Ветеран


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

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


Код: Выделить весь код
#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
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:36, 03-06-2010 | #10



Компьютерный форум 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




 
Переход