вторник, 29 июня 2010 г.

Создание ярлыков из консоли

Периодически надо создавать что-то вроде доморощенных инсталляторов.
Обычно в такой ситуации вполне хватает функционала WinRAR. Можно распаковать программу в нужную папку, выполнить какие-то действия и создать ярлык. Недавно столкнулся с тем что надо больше опций при создании ярлыка и при этом сохранить автоматизацию.
Поисках немного в Интернете наткнулся на такую вот статью:
http://www.xxcopy.com/xxcopy38.htm

В статье описывается программа XXMKLINK и даются ссылки на ее скачивание.
Программа предназначена для создания ярлыков в cmd, что удобно для развертывания пакетов с помощью скриптов.

четверг, 24 июня 2010 г.

Поиск компьютеров без определенного ПО

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

Такая коллекция описана в официальном KB по адресу https://kb.altiris.com/display/1/kb/article.asp?aid=53318
Ниже пример SQL запроса из KB

select * from vComputer r

where GUID not IN
                (select ai._ResourceGuid from vComputer i
join Inv_AeX_OS_Add_Remove_Programs ai on ai._ResourceGuid = i.Guid
WHERE ai.Name = 'Microsoft Office Word Viewer 2003')
and r.ismanaged=1





WHERE ai.Name = 'Microsoft Office Word Viewer 2003' с легкостью заменяется на конструкцию вида 

WHERE ai.Name like 'Microsoft Office%'



Одно из преимуществ Altiris - есть возможность делать исключения из коллекций компьютеров других коллекций.
Учитывая описанную выше схему можно создавать группы исключений для установки определенного ПО.

среда, 23 июня 2010 г.

Определение порта Cisco к которому подключен компьютер

Некоторое время назад возникла задача определять порт роутера Cisco к которому подключен компьютер.
В качестве вводных данных были сведения что на роутерах включен CDP.
CDP - это Cisco Discovery Protocol, некий протокол, по которому с некоторой периодичностью ведется broadcast с идентификационными данными порта роутера Cisco.
Довольно длительный поиск программ которые могли бы работать с этим протоколом и при этом работали бы в консольном режиме привел к программе Cisco Discovery Protocol Reporter Version 1.0.7, сокращенно CDPR.exe.
Эта программа обладает почти всеми требуемыми характеристиками, за исключением нескольких ньюансов.
Ньюанс 1 - при запуске программа требует указать ей сетевой адаптер через который она будет слушать. Выглядит это как:
cdpr - Cisco Discovery Protocol Reporter Version 1.0.7
Copyright (c) 2002 - MonkeyMental.com
1. \Device\NPF_GenericDialupAdapter (Adapter for generic dialup and VPN capture)
2. \Device\NPF_{CA318676-6027-4305-8A6F-4633BC2412EB} (Marvell Yukon Ethernet Controller.)
Enter the interface number (1-2):

Поскольку у нас задача автоматизировать этот процесс возник вопрос как это обойти.
Ньюанс 2 - при запуске она требует наличия ряда библиотек. Если она их видит в конечном итоге ругается на не установленный WinPCAP. Поскольку он не имеет silent-режима установки пришлось придумать способ обойти и это.

Для начала разберемся с пунктом 1.
Программа изначально была написана для Linux, что позволило предположить наличие ключа -h со справкой. Выяснилось что существует ключ -d для указания сетевого адаптера. К сожалению он принимает в качестве параметра исключительно ID сетевого устройства. Узнать его можно из ветки реестра SYSTEM\CurrentControlSet\Control\Network . Нам требуется раздел с параметром Class = Net. Подраздел и будет содержает требуемый для нас DeviceID. В нашем случае это получается

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{CA318676-6027-4305-8A6F-4633BC2412EB}
Остается только добавить NPF_  и можно отправлять полученное значение программе CDPR.exe с ключем -d.

По ссылке находится скрипт написанный на Powershell для автоматизации процедуры получения DeviceID и запуска CDPR.exe .
Полученные от программы данные в виде


Device ID
  value:  
Addresses
  value:  
Port ID
  value:  


Записываются в реестр в ветку hklm\SOFTWARE\Company\Network\ и могут быть оттуда проинвентаризированы. Также можно сразу формировать файлы .mof или .xml для SCCM и Altiris соответственно, доделав соответствующим образом скрипт.

По поводу пункта 2.
Выяснилось что для полноценного запуска программы требуется три библиотеки - Packet.dll, WanPacket.dll и wpcap.dll. Эти файлы можно просто положить рядом с программой. Также для запуска требуется наличие файла npf.sys. К сожалению этот файл требуется скопировать в папку Drivers, иначе не срабатывает.

Скрипт проверяет наличие npf.sys в папке System32/Drivers и, если не находит его, копирует из папки где располагается сам.

В теории это выглядит так - пакет содержит все указанные файлы. У пакета программа имеет строку запуска powershell -executionpolicy unrestricted .\get_adapter.ps1
-executionpolicy требуется на всякий случай, если не отработала ранее команда powershell -command set-executionpolicy unrestricted или скрипт не подписан.

Весь комплект файлов расположен по ссылке. Скрипт расположен отдельно по ссылке выше.

Java AU/Flash AU

Сегодня мы попробуем отключить в пределах всего домена автообновление SUN JRE и Adobe Flash 10.

Для первого пунка нам потребуется внедрить следующий код в реестр всех компьютеров:
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Update\Policy]
"EnableJavaUpdate"=dword:00000000
"EnableAutoUpdateCheck"=dword:00000000

Второй пункт немного сложнее.
Процедура описана в статье Adobe.KB http://kb2.adobe.com/cps/167/16701594.html

Мы создадим два пакета и две задачи для достижения наших целей.
Пакет 1.
Package Source : "Package does not contain source files"
Programs:
Program 1:
Command Line: reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v SunJavaUpdateSched /f
Эта команда удалит jushed из автозагрузки.
Program 2:
Command Line: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Update\Policy" /v EnableJavaUpdate /t REG_DWORD /d 0 /f
Program 3:
Command Line: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Update\Policy" /v EnableAutoUpdateCheck /t REG_DWORD /d 0 /f

Пакет 2.
Пакет 2 будет содержать один файл - mms.cfg с всего одной строкой "AutoUpdateDisable=1"
Programs:
Command Line: xcopy /y mms.cfg %systemroot%\system32\Macromed\Flash

Задача 1 будет типа Sequential, задача 2 - стандартной.
Вуаля.


UPD:
После некоторого совещания было решено сделать первичную процедуру через TaskManagement и далее просто модифицировать пакеты для инсталляции соответствующего софта.

Altiris, что это такое и с чем его едят

Попытка номер -дцать создать блог посвяшенной чему нибудь интересному или полезному. На этот раз попробую писать про систему Symantec Altiris.
Altiris - это аналог MS SCCM (Microsoft System Center Configuration Manager), ранее называвшийся SMS.
Обе системы позволяют (если кратко) устанавливать и инвентаризировать Software, собирать конфигурации Hardware, etc. В теории эта система должна покрывать все потребности системного администратора управляющего парком компьютеров числом более 200.

SCCM предоставляет MMC-консоль, Altiris работает исключительно через web-интерфейс.