Что нового

[Автоматизация] Перезапуск программы на удаленных компьютерах

shleg

Пока дышу, надеюсь...
Сообщения
4
Репутация
0
Всем доброго дня. Помогите с такой проблемой. Есть 10 ноутбуков с Windows Home Premium x64. Нужно следующее:
скрипт на этих ноутбуках отслеживает нажатие определенной клавишы на управляющем компьютере, и когда клавиша нажалась, перезапускает одну программу. Мониторинг должен быть постоянным. Вот как то так
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
HotKeySet('{f12}','fu')
While 1
	Sleep(100)
WEnd
Func fu()
	Run('pskill.exe');указываешь параметры
	Run('PsExec.exe');указываешь параметры
EndFunc

http://technet.microsoft.com/ru-ru/sysinternals/bb896649
Помоему, ты неверно ставишь задачу - зачем городить отслеживаник клавиш с клиентских машин, когда можно на управляющем компе по нажатию клавиши перезапускать удалённо программы.
Мой код прибивает удалённые процессы, а затем пускает их вновь. Если я тебя неверно понял, проясни задачу.
 
Автор
S

shleg

Пока дышу, надеюсь...
Сообщения
4
Репутация
0
sngr день добрый. Да, наверно не совсем точно объяснил. На 10 ноутбуках стоит программа, которая захватывает изображение с одного источника. Иногда начинается тупняк, и изображение не передается, хотя программа работает. Решается перезапуском программы на всех ноутбуках. Хочу автоматизировать этот процесс. То есть, на ноутбуках запускаем скрипт, который отслеживает нажатие клавиши на рабочем месте оператора. Как только оператор видит, что изображение не отображается, он нажимает клавишу у себя на компе, и на ноутах программа перезапускается.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Тогда всё просто - на управляющем компе запускаешь это:
Код:
HotKeySet('{f12}','fu')
While 1
    Sleep(100)
WEnd
Func fu()
    Run('pskill.exe \\comp1');указываешь параметры
    Run('PsExec.exe \\comp1');указываешь параметры
    Run('pskill.exe \\comp2');указываешь параметры
    Run('PsExec.exe \\comp2');указываешь параметры
    ;и т. д.
EndFunc
 
Автор
S

shleg

Пока дышу, надеюсь...
Сообщения
4
Репутация
0
Если бы было так просто, я бы не писал на форум. Дело в том, что на Windows Home psexec у меня не заработал.


Добавлено:
Сообщение автоматически объединено:

Поэтому нужен клиент-сервер. :(
я с этим psexec парился два часа
 
Автор
S

shleg

Пока дышу, надеюсь...
Сообщения
4
Репутация
0
К Windows Home получить доступ из сети к ADMIN$ нереально. Поэтому не могу использовать psexec. Может подскажете, как реализовать это через клиент-сервер
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Как один из вариантов можно сделать так: клиент отслеживает появление определенного файла в рассшаренной папке сервера (например, имя_компьютера_клиента.txt) и в случае появления, перезапускает программу и удаляет файл.

Сервер же просто генерирует данные файлы по нажатию клавиши.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
$comp='.'
$obj=ObjGet("WinMgmts:\\"&$comp&"\root\cimv2")
$que=$obj.ExecQuery("Select * from Win32_Process where  caption='explorer.exe'")
$res=''
For $o In $que
 $res&= "Имя процесса: " & $o.Name & ' - ' &"Приоритет: " & $o.Priority & @CRLF
 Next
 MsgBox(0,'',$res)
 Func MyErrFunc()
  MsgBox(4096,"AutoItCOM Test","We intercepted a COM Error !"      & @CRLF  & @CRLF & _
"err.description is: "    & @TAB & $oMyError.description    & @CRLF & _
"err.windescription:"     & @TAB & $oMyError.windescription & @CRLF & _
"err.number is: "         & @TAB & hex($oMyError.number,8)  & @CRLF & _
 "err.lastdllerror is: "   & @TAB & $oMyError.lastdllerror   & @CRLF & _
 "err.scriptline is: "     & @TAB & $oMyError.scriptline     & @CRLF & _
 "err.source is: "         & @TAB & $oMyError.source         & @CRLF & _
 "err.helpfile is: "       & @TAB & $oMyError.helpfile       & @CRLF & _
"err.helpcontext is: "    & @TAB & $oMyError.helpcontext)
Exit 1
EndFunc

$comp='здесь сетевое имя одного из ноутбуков'


Добавлено:
Сообщение автоматически объединено:

Ты разобрался, что код выше только возращает имя и приоритет на удалённом компе?
 
Верх