АЛЕКСЕЙ БАРАБАНОВ
Автоматизация MS Windows, или AutoIt как мечта эникейщика
Часть 4
Итак, когда диск для автоматической установки уже у вас в руках, надо правильно его использовать. А после установки рабочей станции еще и получить отчет. Обо всем этом в последней, заключительной части статьи об AutoIt.
Полная виртуализация работы
Если у вас дома в телефоне нет гудка, позвоните в службу компьютерной поддержки.
Мы можем это починить прямо из офиса.
Наконец-то диск с автоматически устанавливаемым Windows готов. Самое главное, что пользоваться им должны не системные администраторы, а обычные рядовые сотрудники обслуживаемых компаний. Такой диск позволяет произвести установку новой станции или переустановку поврежденной станции без локального участия системного администратора. Сотрудник, оставшийся без рабочего места, должен лишь в общих чертах представлять процесс установки. Ему достаточно поместить диск, заранее созданный по указанной методе и оставленный для такого случая на предприятии, в лоток CD-Rom и произвести перезагрузку компьютера, не забыв нажать «any key», чтобы активировать загрузку с CD. Единственный раз, когда ему придется проявить самостоятельность, это выбор места, точнее, раздела, установки. Так как используется руссифицированная версия Windows, то все диалоги, определяющие выбор, переведены на русский язык и снабжены комментариями. У меня не было случая, чтобы кто-нибудь ошибся разделом. Это ведь так просто – нажать и затем . После чего самое главное для окружающих не трогать ни клавиатуру, ни мышку. Установка продолжается от 40 минут до полутора часов, в зависимости от мощности компьютера. В результате будет запущен сеанс Администратора с уже известным паролем. Вот в этот момент приходит черед для приложения рук реального сисадмина-аутсорсера. Обычно этому предшествует звонок с сообщением, что установка завершена. С точки администрирования через сеть (автор это делает по каналам openvpn или pptp) поднимается подключение к удаленному рабочему столу. И затем неторопливо производится завершение настройки рабочей станции. Например, так:
- Бюджетам Администратор и localadmin устанавливаются надежные пароли.
- Оба бюджета назначаются в список удаленного доступа.
- Рабочей станции меняется имя на реальное.
- Перезагрузка и далее снова подключение к рабочему столу как localadmin.
- Рабочая станция включается в домен.
- Перезагрузка с последующим подключением к рабочему столу как localadmin.
- Выбранный доменный пользователь прописывается на рабочей станции как администратор и назначается в список удаленного доступа.
- Устанавливается принтер.
- Пользователь localadmin выходит из системы.
Все! Станция готова к работе. Можно перед выходом распечатать на локальном принтере приглашение для сотрудника приступить к работе. После этого обрадованный решением его проблем сотрудник прекращает курить и начинает работать. А «утомленный» сисадмин переходит к кофе-брейку, что никак не раздражает его работодателя, так как происходит за десятки или даже сотни километров от кабинета строгого руководителя. Шутка, конечно, но так или иначе все свои действия сисадмин может выполнять в весьма комфортных условиях. Скорее всего, с только что установленной станции надо будет снять информацию для отчета или дождаться, когда эта информация поступит в автоматизированную систему учета, так как именно для этого была предусмотрена установка snmp и настройка файрвола для доступа из локальной сети. Отчет можно оформить по вкусу, например, так, как приведено на снимке с экрана http://www.barabanov.ru/arts/autoit/draw7-8.png, после чего остается его распечатать и заполнить приватной информацией. Если одновременно устанавливается большое число станций, то возможность автоматически получить их характеристики сильно облегчает создание отчетности, что уже прямо связано с закрытием работ у заказчика. Но даже на изолированной рабочей станции можно получить ту же самую отчетность прямо в процессе установки. Например, используя утилиту cpu-z для детектирования оборудования с http://www.panopsys.com, «обернув» ее скриптом на AutoIt, или просто воспользоваться данными из реестра MS Windows, которые можно считать тем же самым AutoIt, и после форматирования записать в файл с отчетом. Вариант с cpu-z рассмотрим подробнее.
При написании этого скрипта опять немного усложним использованный инструментарий. Обратите внимание, в команду запуска добавим флаг @SW_HIDE, заставляющий спрятать окошко с запускаемым командным интерпретатором. Далее все по обычной схеме: запуск анализ перехватчика написание команд. Но в случае с этой программкой все оказывается не так просто. После выхода на закладку с кнопкой для генерации отчета в форме html оказывается, что нет способа сделать ее активной с помощью клавиатурных нажатий. Приходится воспользоваться эмуляцией мышиных кликов. Для этого, как показано на рис. 1, надо определить относительные координаты точки, в которой должно произойти нажатие мыши.
Рисунок 1. Определяем координаты точки нажатия
Эта задача должна иметь решение, независимое от размера экрана и положения рабочего окна на нем. Для этого способ указания координат мыши переводим в относительный, отсчитываемый от верхнего левого угла активного окна режим, задавая параметр «MouseCoordMode», равный 0. Но координаты курсора, отражаемые в перехватчике, имеют абсолютное значение. Поэтому сначала определяем координаты точки, соответствующей верхнему левому краю окна, затем координаты нужной точки и только тогда переводим координаты второй точки в относительные. В нашем случае получается так: X=455-308=147, а Y=528116=412. И именно 147 и 412 надо использовать в программе. Полный текст программы приведен далее:
Листинг 1. Программа получения состава оборудования
AutoItSetOption ( "WinTitleMatchMode", 2 )
AutoItSetOption ( "WinDetectHiddenText", 1 )
AutoItSetOption ( "SendAttachMode", 1 )
; open free desktop
WinMinimizeAll ( )
Sleep ( ‘1000’ )
; run test
Run ( @ComSpec & " /c cpuz.exe", '' ,@SW_HIDE )
If WinWaitActive ( 'CPU-Z','',10 ) == 0 Then
Exit
EndIf
Send ( '{RIGHT}' )
Sleep ( '1000' )
Send ( '{LEFT 2}' )
Sleep ( '1000' )
Send ( '{RIGHT 5}' )
Sleep ( '1000' )
FileDelete ( @WindowsDir & '\' & @ComputerName & '.html')
AutoItSetOption ( "MouseCoordMode", 0 )
MouseClick ( 'left', 147, 412, 1 )
If WinWaitActive ( 'Сохранить как','',10 ) == 0 Then
ProcessClose ( 'cpuz.exe' )
Exit
EndIf
Send ( '{DEL}' )
Sleep ( '1000' )
Send ( @WindowsDir & '\' & @ComputerName & '.html')
Sleep ( '1000' )
Send ( '{ENTER}' )
If WinWaitActive ( 'CPU-Z','',10 ) == 0 Then
ProcessClose ( 'cpuz.exe' )
Exit
EndIf
Send ( '!{F4}' )
If WinWaitClose ( 'CPU-Z','',10 ) == 0 Then
ProcessClose ( 'cpuz.exe' )
Exit
EndIf
If FileExists ( @WindowsDir & '\' & @ComputerName & '.html') == 1 Then
; run browser
Run ( @ComSpec & " /c rundll32 url.dll, FileProtocolHandler " & @WindowsDir & ‘\’ & @ComputerName & '.html','',@SW_HIDE )
EndIf
Exit
Для работы этого скрипта нужно скачать с указанного сайта утилиту cpu-z и, для того чтобы эта утилита могла запускаться автоматически без указания точного пути до исполняемого файла, подложить ее в $OEM$/$$/System32. Скрипт, который будет производить запуск, поместить в $OEM$/$1/InstData в откомпилированном виде. Далее команду запуска запишем в общий командный файл :
Листинг 2. Вызов программы получения состава оборудования
/heap/Windows/uawsp2 # grep cpu-z $OEM$/$1/InstData/GuiRunOnce.cmd
%systemdrive%InstDataget_cpu-z_info.exe |
По завершении установки будет создаваться отчет по оборудованию в формате html и записываться автоматически в файл «Имя рабочей станции.html». Примерно так, как это показано на рис. 2.
Рисунок 2. Отчет о завершении установки
В заключение добавлю, что некоторые тексты, обсуждаемые в статье, но не удостоившиеся отдельной ссылки, можно найти в архиве по ссылке 1.
Hикогда нас не благодарите. Мы любим это, и нам за это платят!
Ссылки:
- Архив исходных текстов: http://www.barabanov.ru/arts/autoit/src.tgz.