пятница, 26 декабря 2008 г.

Поиск файлов из коммандной строки.

Иногда, работая в консольном окне операционной системы, возникает необходимость поиска файлов. Сделать это можно из командной строки всем известной командой DIR.
Помимо хорошо известного назначения этой команды просмотр содержимого каталога, ее еще можно применять и в другой области.
Например: нужно найти файл cmd.exe
Поиск осуществляется из текущего каталога, посему для поиска по диску нужно стоять в его корне.

dir cmd.exe /s

и вам будет выдан список найденных файлов. Также можно использовать шаблоны поиска:

dir *.doc /s

выведет на экран все документы Вашего компьютера.
Обычно данная комманда не помещается на экран. Для удобства можно воспользоваться перенаправлением вывода в файл:

dir *.doc /s >> finded.txt

пятница, 12 декабря 2008 г.

Microsoft спамит

То ли это связано с отставкой ключевой фигуры, то ли с особенностями национального украинского характера, но компания Microsoft, которая пропагандировала себя как компания, которая не занимается и никогда не будет заниматься расспространием рекламных сообщений (спама), к новому году прислала сообщение с рекламой своего продукта. Сообщение пришло от украинских коллег Microsoft.


Может это кризис так действует на людей?

четверг, 11 декабря 2008 г.

Как-то с коллегами обсуждалась проблема применения групповых политик в Active Directory (AD), которая заключалась в многократном применении политики к одним и тем же объектам домена. Эта стандартная ситуация явно иллюстрируется следующим примером:

Есть OU (подразделение) БУХГАЛТЕРИЯ, к которому необходимо применить определнную политику. Но в данном подразделении некоторые сотрудники находятся в отпуске, коммандировке, на больничном, в общем отсутствуют на рабочем месте. Встает вопрос как гарантированно применить политику на все компьютеры в этом подразделении? Самый простой вариант - оставить назначенную политику на долгий период, за который люди выйдут из отпуска, приедут из коммандировки и включат компьютеры. Но все это всемя политика будет отрабатывать на остальных компьютерах дополнительно нагревая воздух в кабинетах взмыленными от работы процессорами. Непорядок...

Как этого избежать? Была идея динамического применения групп для фильтрации применения политики.
Создаем группу TMPPOLICY, включаем в нее все компьютеры на которые необходимо применять политику (для случая Machine Policy) и ставим Security Filtering для политики:


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




Const ADS_PROPERTY_APPEND = 3
Const ADS_PROPERTY_DELETE = 4
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
Const DOMAIN_NAME = "DOMAIN"
Const DSN_DOMAIN_NAME = "dc=my,dc=domain,dc=com"
Const TMP_POLICY_GROUP = "TMPPOLICY"
Const LOCATION_TMP_POLICY_GROUP = "Computers"
Const TMP_POLICY_ADMIN = "TMPPOLICYADMIN"
Const TMP_POLICY_ADMIN_PASSWORD = "Qwe4rty7"

Set objNetwork = CreateObject("Wscript.Network")
strNTName = DOMAIN_NAME & "\" & objNetwork.ComputerName & "$"


Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_NT4, strNTName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)

Set objConn = CreateObject("ADODB.Connection")
objConn.Provider =
"ADsDSOObject"
objConn.Open
"Active Directory Provider"

Set oMyDS = GetObject("LDAP:")
Set objGroup = oMyDS.OpenDSObject("LDAP://cn="&TMP_POLICY_GROUP&",cn="&LOCATION_TMP_POLICY_GROUP&"," & DSN_DOMAIN_NAME &, TMP_POLICY_ADMIN, TMP_POLICY_ADMIN_PASSWORD,ADS_SECURE_AUTHENTICATION + ADS_SERVER_BIND)

objGroup.PutEx ADS_PROPERTY_DELETE,
"member", Array(strUserDN)
objGroup.SetInfo


В скрипте запросы производятся от имени пользователя TMPPOLICYADMIN, который должен иметь право в домене на создание/удаление/изменение членства в группах.

Таким образом просмотр изменения членства в группе еще можно рассматривать и как отчет о применении политики.

вторник, 9 декабря 2008 г.

Сервисы AutoExNT и SrvAny

Недавно возникла задача автоматизации запуска приложения под ОС Windows Server 2000. Причем приложение состоит из bat-файла, который запускает и перестартовывает exe-файл если тот непредвиденно прекращает работу.
В рамках этой задачи возникла идея организации службы, которая будет при старте системы, даже без логона пользователя запускать приложение. Первое, что пришло в голову - использование InstSrv.exe утилиты.


Вот так выглядит это решение:

Инсталлируем сервис:
instsrv XXX c:\windows\system32\srvany.exe

Редактируем реестр
HKLM\System\CCS\Services\XXX

Создаем тут ветку Parameters
  1. В этой ветке создаем Application REG_SZ %windir%\system32\cmd.exe
  2. В этой ветке создаем AppParameters REG_SZ /c xxx_reload.bat
  3. В этой ветке создаем AppDirectory REG_SZ путь к папке приложения соотв-но
  4. В этой ветке создаем AppEnvironment REG_SZ пусто
Пуск\выполнить\services.msc – находим XXX, ставим тип запуска Auto и запускать от имени предназначенного для этого пользователя.


Вполне работоспособное решение. Положительным моментом данного решения можно считать то, что исполняемым в качестве сервиса файлом может быть не только командный файл, но и исполняемые файлы.

Второй вариант решения, который нам предоставляет Microsoft Resource Kit более подходит для моего варианта. Это использование сервиса AutoExNT. Этот сервис имеет узкоспециализированное значение запуска коммандного AutoExNT.bat файла.

Вариант этого решения выглядит следующим образом:

1. Для работы необходимо на целевую систему скопировать файлы в системную папку %SystemRoot%\System32\ Servmess.dll, Autoexnt.exe, InstExNT.

2. Создаем AutoExNT.bat, который должен исполнятся в качестве службы. В нем то и будет реализована вся необходимая нам функциональность.

3. Инсталируем сервис коммандой:
instexnt install
или
instexnt install /interactive

Отличие этих двух команд заключается в возможности пользователя взаимодействовать с сервисом (останавливать или запускать его).

4. После этого сервису можно дать комментарий в оснастке services.msc и протестировать на запуск/остановку коммандами

net start autoexnt

net stop autoexnt


Вуаля! Получаем контролируемый, выполняемый при загрузке сервиса код.

среда, 5 ноября 2008 г.

Кодеры... программеры....

Что касается меня, я не находил принципиальной разницы между кодерами и программерами. На недавно проходившем семинаре в г. Северодонецке, который устроила фирма BestWay докладчиком от HP Сергеем Сергеевым было акцентировано внимание на различие между оными.
И как вы думаете в чем принципиальная разница? Программисты - это инженера от IT, которые мыслят критериями алгоритмов, а кодеры - это реализаторы тех самых алгоритмов на одном из языков программирования.

Привет всем друзьям кодерам и программерам ;)

Ньюансы MAC адресов.

Посещая курсы по IT технологиям в 2002-м году тренерами упорно пропагандировалось мнение о том, что изменение MAC-адреса компьютера дело довольно запутанное и под силу лишь хакерам. Причем использование для этой цели любой сетевой карточки не подходило а нужна была особенная, которая предоставляла такую возможность.
На сегодня ситуация в корне изменилась и изменить MAC-адрес карточки может любой пользователь. Для этого достаточно зайти в настройки сетевого адаптера.



Интересно другое. Существуют договоренности по формату MAC-адреса. Первые 3 байта MAC-адреса определяют производтеля, а следующие распределяются самим производителем на выпускаемую продукцию.
Из-за возможности изменять MAC адреса устройств было решено разделить их на 2 группы:

  • universally administered address (уникальный адрес от производителя)
  • localy administered address (локально назначенный адрес)

Различия этим адресам придает 7-й бит старшего байта. Значение 1 говорит, что адрес localy administrared, 0 соответственно globaly unique. Однако это не мешает нам вручную иммитировать адреса из globaly unique.

Это приводит еще к одному выводу: системы безопасности, которые в совей основе содержат уникальность MAC не имеют никакого смысла. Хотя я знаю парочку предприятий, которые польуются этим ;)