22:02

End of 2013

We rise up for the things we believe in over and over again
Когда-то мне довелось написать примерное следующее: "Ушедшее - в ушедшем. Ушедшие - в ушедшем."
Сегодня напишу иначе: Всем добра. Всем, без исключения. И тем, кто покинул, и тем, кто остался.
Ушедшим - счастья. Простого человеческого счастья. В конце концов, его заслуживает каждый.
Оставшимся - его же, а вдовесок - моя искренняя благодарность. За что? Думаю, это не требует отдельных пояснений.
Всех с окончанием 2013, и наступающим началом 2014.

@музыка: One More Time - No Romance

15:05

Backups

We rise up for the things we believe in over and over again

Оглядываясь назад, я не понимаю самого себя. Win 7 существует уже достаточно давно, WAIK к ней - тоже. Так зачем все это время искал решение для создания образа системы, если оно у меня под боком все это время было? Да, да, речь о imagex. По сравнению с тем же Акронисом у него все же есть ряд преимуществ:
1. Он бесплатен. По крайней мере в той же мере, в какой является бесплатным приложение, поставляемое вместе с имеющей какую-либо стоимость ОС, то есть без доп. оплаты.
2. Он "от производителя". А это уже многое дает.
3. Он интересен. Акронис и ему подобные - мышкокликерство, которое никак нельзя запрограмиировать, особенно если ты загрузился с диска восстановления. В ОС еще можно использовать костыли вида AutoIt или чего-то подобного. В PE-версии все это не будет доступно, а вот консольное приложение скриптовать можно как угодно.
В итоге - образ системы все же создан и заскриптован по полной программе, чего и требовалось.
Вторая стадия бекапа - сбор файлов настроек разнообразного ПО. Об этом особо. Где только не хранят различные программки и утилитки параметры своей работы. И в каком только виде не хранят. Кто в реесте, кто в профиле, кто еще где. У одних это *.ini, у других - *.cfg, у третьих - *.xml, а кое-кто вообще свою мелкую базу данных вает. Особо выбесил, а другого слова и не подберешь, BitTorrent и его младший брат - uTorrent.
Первое - обе по-умолчанию ставятся в профиль. И только туда. Изменить это на стадии установки нельзя! Объяснение просто блеск, более "гнилой отмазки" мне слышать не доводилось: для того, чтобы UAC системы не препятствовал обновлениям.
Ребята, посмотрите в сторону Мозиллы и ее Firefox, если уж вам это настолько критично. Нет, я согласен, что плодить целую службу для установки обновок - пушка для воробьев. С другой стороны, этот метод давно на вооружении уже у очень многих контор, начиная от МС (Windows Update) и заканчивая Adobe (служба обновления Flash).
Второе по торрентам - настройки обе эти программы хранят исключительно в каталоге установки. То есть, если нужно перенести программу из профиля в каталог, где ей положено быть, то есть Program Files, придется тащить туда же и файл настроек, а потом, как следствие, давать права на запись в этот каталог обычному пользователю ПК. В итоге мы дважды нарушаем принцип установки ПО, а принципы просты: настройки отдельно от бинарников, в каталог бинарников могут писать только административные учетные записи.
В общем, бекап настроек ПО иногда доставляет не то, что меньше, а даже больше "веселья", чем настройка этого самого ПО. С другой стороны - если не веселиться, что что еще делать-то в нашей жизни?
На вкусное - очередная порция добротной шведской поп-музыки. Подсел я на нее (именно в исполнении One More Time) со страшной силой.


@музыка: One More Time - No Romance

@темы: Этот безумный мир, Security

01:14

Xmarks

We rise up for the things we believe in over and over again

Этим сервисом я пользуюсь уже достаточно давно. Меня он устраивает всем. Незаметная работа, возможность создания нескольких профилей для разных машин (дома один набор закладок в панели быстрого доступа, на работе - другой). Но вот сегодня после полной переустановки системы наткнулся на весьма неприятный факт: плагин Xmarks даже после успешной авторизации не мог получить список профилей с сайта, и, как следствие, не мог назначить машине нужный профиль. В итоге на панели закладок непонятная каша. Что делать?
Сначала подумал, что дело в версии Firefox, потому как была поставлена спец. версия ESR. Нет, после удаления ее и установки последней обычной баг никуда не ушел. Переставил плагин. Результат - нулевой. Перебил профили на самом сайте Xmarks. Ноль эффекта.
Но ведь сегодня же еще работало! Пробегаюсь по настройкам самого плагина, чем черт не шутит. И вижу прекрасное. Шифрование данных - по умолчанию стоит только шифрование при логине. А что будет, если этот параметр поменять так, как показано на рисунке:

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

Listen or download Putting on the Charm for free on Pleer

@музыка: One More Time - Putting on the Charm

@темы: Security

22:25

Freeware...

We rise up for the things we believe in over and over again
Когда-то давно была хорошая программа - PowerQuest Partition Magic. Всем хороша, но был у нее один недостаток - она платная. С другой стороны, кого это когда-нибудь в нашей стране останавливало? В общем, пользовалась эта программка всенародной любовью за то, что делала то, что от нее требуется без лишних вопросов и без накладок.
Уже потом появились ее клоны, Paragon, ADD и тому подобное. С парагоном пришлось столкнуться, итогом стала потеря обоих разделов, что были вовлечены в операцию изменения размеров.
В этот раз решил стать дисциплинированным пользователем. Стащил из Сети фриварную утилитку. Занимается тем же самым, что и доброй памяти PQPM. И бесплатно. Требуемая операция - откусить кусок второго раздела с данными и отдать этот кусок первому разделу, где стоит ОС. Операционке стало тесно, а удалять нечего (что такое раздел в 40 Гб для Windows 7?).
Что ж, итог печален. Да, кусок в 20 Гб утилита от диска с данными откусила. И даже отдала его системному диску. Вот только файловую систему на диске с данными она угробила. Поскольку бекапы - наше все, потери ограничились коллекцией игр (их сознательно в резервную копию не перенес), но к этому я был готов, да и сам собирался их уже потереть.
Зато системе теперь вольготно...
Мораль - не доверяйте дармовщине, когда дело касается работой с HDD. Используйте проверенные временем решения. Больше нервов сбережете.

@музыка: One More Time - Putting on the Charm

We rise up for the things we believe in over and over again
Этой подборке уже лет да лет. Девять, если быть точным. Самая короткая из всех, что у меня когда-то были.
В общем-то, два данных трека DCD - это квинтессенция их творчества для меня. Да, у них много композиций и после дебютного альбома, но именно эти две песни стали образцовыми. Причем именно в этом порядке.
О том, как пришлось восстанавливать назваия обоих треков мне писать уже доводилось. Эдак с пару жизней этой записной книжки назад. Сейчас переписывать уже лень, да и не нужно. Скажу лишь, что вспомнив однажды, уже не забуду. Не смогу забыть. Как не смогу забыть и многое другое, накрепко связанное с творчеством DCD вообще и этими двумя композициями в частности, а ведь пытался...


Можно было бы добавить еще и Fatal Impact, но не сюда. Она идет отдельно.

@музыка: Dead Can Dance Selection

@темы: Music

We rise up for the things we believe in over and over again
Я слышу эти голоса. Иногда они меня бесят, иногда заставляют задуматься, а иногда, как сегодня - веселят. Прошлое айоновского ассассина всплыло во всей своей красе. Столовая, поднос на столе, на подносе столовые приборы, взятые на полном автомате. Ложка, нож и... еще один нож. А лежал этот второй нож в контейнере с вилками. И попался же именно мне.
Под ножом я хожу и ножи в моих руках. Мне что, сделать это своим девизом? :)

@музыка: Blue Stone - Breathe

@темы: Этот безумный мир, Этот веселый мир

19:14

Beta tests

We rise up for the things we believe in over and over again
Что ж, тесты на то и существуют, чтобы отлавливать ошибки в коде программ. Но иногда ошибки просто смешные, а иногда - бесящие до белого каления, ибо совершенно не понятно, как можно было ее допустить.
Идет тестирование Diablo III: Reaper of Souls. На персонаже на момент окончания оригиналльной DIII висит следующий амулет:

Запускаем бета-клиент, копируем персонажа на тестовый сервер, заходим. Получаем следующее:

Пересчитан требуемый уровень персонажа, и как следствие - амулет просто недоступен для использования. А по некоторыми причинам опыт за убийство монстров моему персонажу на данный момент вообще не начисляется. Ситуация с опытом - НЕ баг, а вот изменения в предмете - ошибка, как Близзард сама признала. Будут править.
Но все же, какой травкой нужно было затариться, чтобы так уж облажаться?

@темы: Этот безумный мир

00:27

Laliya

We rise up for the things we believe in over and over again
Нет, эта трава, найденная в свое время на просторах Sky.fm/newage, не отпустит еще очень долго. Настолько глубокого гитарного звука в композиции, не относящейся к року, я не слышал, наверное, со времен памятной темы города Тристрам. Знающие - меня поймут.

Listen or download Laliya Present Moment for free on Pleer

@музыка: Laliya - Present Moment

@темы: Music

We rise up for the things we believe in over and over again

Следующая подзадача в нашей эпопее - в образе есть дефолтная пользовательская учетка. После того, как образ развернется, этой учетке нужно поставить свойство User must change password at next logon. Естественно, по возможности опять же в powershell сделать.
Методов несколько. Чтобы не томить, привожу тот, что сработал в моем случае:

$username=%INSERT IGNORE_ACCOUNT_NAME%
$user = [ADSI]"WinNT://$env:computername/$username,User"
$user.passwordexpired=1
$user.setinfo()

Код прост как две копейки. Получить от провайдера ADSI объект нашей учетки, поменять его свойство под названием "Пароль просрочен", подтвердить изменения. Все. Задача выполнена.
А вот в процессе написания выплыл интересный факт. Галка User must change password at next logon в интерфейсе свойств учетной записи связана с вот таким свойством: User Flags. Значение этого параметра вычисляемое и зависит от нескольких факторов. МСы в документации приводят полный список значений, которое это свойство может принять - Клац!
Ок, небольшой эксперимент. В свойствах учетной записи в графическом интерфейсе меняем все галки, кроме самой первой. Это как раз User must change password at next logon. А потом даем простые три строчки:

$username=%INSERT IGNORE_ACCOUNT_NAME%
$user = [ADSI]"WinNT://$env:computername/$usenamer,User"
$user | fl *

И наблюдаем, что параметр UserFlags принял значение 8389121. Закономерный вопрос - как так?! Ответить на него еще только предстоит. А пока - добиваем в скрипт окончательной настройки системы после развертывания полученный ранее блок команд, и наслаждаемся результатом.

@музыка: Laliya - Just like river

@темы: PowerShell, Scripting

23:20

Readers

We rise up for the things we believe in over and over again

Читалки. Небольшие программки, позволяющие погружаться в вымышленные миры. Те, что скрашивают наши перемещения в транспорте, одинокие вечера, те, что помогают не сойти с ума (а ситуаций, располагающих к сумасшествию в нашем теперешнем мире за глаза и уши). Или небольшие "железки", недопланшеты :)
До этого дня пользовался подаренной на прошлой работе читалкой от Texet. До нее - программами для смартфона. MSaT, помнится, был прочитан весь при помощи Moon+ Reader. Еще куча книг - при помощи сервиса Bookmate. Что-то - при помощи встроенного в стоковую прошивку и потом удаленного FBReaderJ, ныне называющегося FBReader for Android. И как же тяжело видеть, что практически все эти программки вместе со своим развитием обрастают багами. То сбой в памяти, то сбой в процессе синхронизации, то просто фатальный сброс библиотеки.
На очереди следующий претендент - Cool Reader. Судя по отзывам - утилита стоит своих мегабайт на телефоне. На смарте не так много памяти, а что-то удалять не хочется, используется действительно все. Посмотрим, как оно пойдет. Судя по тому, что получилось настроить - шансы на комфортное чтение есть.
А что до "железной" читалки... В последнее время начала немного напрягать необходимость таскать с собой два устройства.

Listen or download Laliya Just like river for free on Pleer

@музыка: Laliya - Just like river

@темы: Android

We rise up for the things we believe in over and over again
Пожалуй, ни одна из систем снятия образов дисков не заставляла специально для нее писать хоть сколько нибудь строчек кода. Но поскольку ImageX - консольное приложение, без скриптов не обойтись, с другой стороны - это новое знание, то, за чем я и охочусь.
Итак, что нужно? Есть ноутбук. На нем уже установлена Windows 7 с кучей дополнительных программ от известной конторы с двухбуквенным названием. Задача следующая - снести все лишнее, установить требуемое ПО, провести базовую настройку параметров, после чего снять образ системы с таким расчетом, чтобы этот образ можно было развернуть на порядочном числе таких же ноутбуков. В общем, задача тривиальная. Нетривиально тут другое - режим работы жесткого диска. В наличии стандартный HDD и к нему в пару SSD небольшого размера, работающий как кэш-диск. И вот с этим-то у большинства систем подготовки образов возникли проблемы. Кто не смог правильно опознать контроллер жестких дисков (типичная проблема, надо признать), кто-то сделал образ, но при попытке его развернуть получаем систему, уходящую в BSOD, или еще интереснее, потерявшую загрузчик. В общем, неважно дела обстоят в датском королевстве. А поскольку ImageX был известен, но еще ни разу в жизни не был опробован, почему бы не дать ему шанс.
ImageX работает в окружении WinPE. Следовательно, если WinPE сможет увидеть HDD, то это сможет сделать и ImageX, ему будет плевать на контроллеры, контроллерами будет заниматься WinPE, а он это умеет. Это плюс, потому что одной проблемой меньше. Далее - ImageX является детищем MS, стало быть, можно надеяться на почти безглючную работу (полностью безглючной не бывает в принципе). Ну и третье - Windows AIK, частью которого являются WinPE и ImageX, можно абсолютно бесплатно загрузить с сайта MS и пользоваться в свое удовольствие. Это тоже немаловажно.
Итак, все стащено, подготовлен загрузочный образ, в него внедрен ImageX. Берем исходный ноутбук и начинаем прикидывать, что и как. Общими усилиями приходим к выводу, что на свежеустановленной ОС жесткие диски работают в обычном режиме: HDD принимает на себя всю нагрузку, а SSD остается в стороне и ничего не делает. Режим кэширования нужно включать руками. Это хорошо. Потому что кэширование не будет мешать на этапе снятия образа. Сказано - сделано. Кэширование выключено, ОС установлена, драйверы установлены. Заодно разбили жесткий диск ноутбука так, как требовалось (нужно несколько разделов). Рабочее ПО пока не накатываем, любопытно, как же поведет себя образ системы в принципе. Последний шаг подготовки исходного ПК - "запечатывание":

C:\Windows\system32\sysprep\sysprep /oobe /generalize /shutdown

Все. Система потушена и подготовлена к снятию образа. Теперь на сцену выходит WinPE.
Сама по себе загрузка с этого диска не отличается от загрузки с обычного дистрибутива Windows, только их всего интерфейса мы получим обычную консоль cmd.exe. Большего и не нужно. До загрузки неплохо было бы подключить флешку или внешний HDD, чтобы было куда образ положить.
Теперь начинаем разбираться, как же работает ImageX. Вообще лучше для этого прочесть соответствующую страницу на Technet - там все команды расписаны весьма подробно. Одно только омрачает: ImageX в своей работе полагается на буквы дисков, а расставляются они весьма забавно. В итоге, чтобы узнать, какие буквы отвечают за нужные нам разделы, можно воспользоваться программой DiskPart, она, кстати, нам очень пригодится на этапе развертывания образа. Чтобы увидеть буквы дисков, нужно зайти в сам DiskPart, набрав это слово в командной строке, а в ответ на приглашение самого DiskPart ввести List Volume. DiskPart покажет все имеющиеся тома. Запоминаем те, что нам нужны.
В моем случае раскладка была такой:
Диск С - зарезервированный системой раздел, где хранится информация о загрузчике.
Диск D - это тот диск, где установлена сама ОС (в Windows изсестный как C:)
Диск Е - дополнительный диск, созданный с учетом необходимости (в Windows виден как диск D:)
Что ж, буквы определены, можно натравливать на диски сам ImageX.
Поскольку ImageX не умеет снимать данные со всех разделов, придется вызвать эту программу трижды (по числу разделов), меняя параметры. Получилось вот так:

Параметры таковы:
/capture - захват образа раздела и помещение его в создаваемый файл образа.
/append - захват образа раздела и добавление его в уже существующий файл образа.
/boot - этот ключ дает понять, что мы захватываем загрузочный раздел (в Windows в диспетчере дисков он маркируется как Boot)
G:\backup.wim - собственно расположение файла образа
Подпись в кавычках - подпись образа раздела в файле образа. так можно будет определить, где какой раздел.
В общем и целом, со снятием образа проблем не возникло, ImageX отработал как часы. Теперь тест - как образ развернется. В качестве теста используем эту же машину, вычистив ее жесткий диск. Вот тут на сцену опять выйдет DiskPart, причем в режиме исполнения сценариев.
Сценарий таков:

Что он сделает? Выберет диск с номером 0 (наш HDD и есть нулевой), вытрет на нем все разделы и создаст их заново. Три штуки с требуемыми объемами. Буквы им будут присвоены с конца алфавита, чтобы не было конфликтов с имеющимися на данный момент. Буква X пропущена, потому что она будет занята виртуальным диском (его создаст сам WinPE в процессе загрузки).
Как добиться от DiskPart работы в режиме скрипта? Очень просто:

DiskPart /s sсript.txt, где sсript.txt - собственно файл, в котором содержатся команды для DiskPart.

Ну а после того, как все необходимые разделы будут подготовлены, на сцене снова появится ImageX в режиме применения файла образа:

В принципе, тут все примитивно. Берется файл образа, их него извлекается первый созданный образ раздела и применяется к диску z:, затем второй образ накатывается на диск y:, а третий - на диск w:
После завершения развертывания образа идет самый интригующий момент. Запустится или нет. Запустилось. Система послушно ушла в OOBE режим, что и требовалось по условиям задачи. Метод работает, следующий этап - подготовка полного эталонного ноутбука и снятие образа уже с него с переносом на другой ноутбук. Но эту траву будем курить уже после выходных.
При известном желании можно заскриптовать весь этот процесс. Собственно, развертывание образа на ноутбуки сейчас и реализовано в виде cmd-файла. Создание же образа оформлять в виде скрипта показалось излишним, это однократная процедура.

@музыка: Oysten Sevag - The door is open

@темы: Scripting

We rise up for the things we believe in over and over again

Подсказали сегодня на работе задачку. Суть ее в следующем: образ системы, из которого будут разливаться рабочие станции, должен быть настроен таким образом, чтобы профили пользователей создавались и жили не на системном разделе. Задача не горящая, но тем не менее. А поскольку нужно немного отвлечься от Хроник Арции, виртуальную машину с Win 7 - запустить.
Что имеем? Методов несколько. Первый - быстрый и неправильный, второй - чуть более долгий, но зато верный. Первый - это простое перемещение каталога Users на нужный нам диск (естественно, придется делать это в оффлайн-режиме) с последующей установкой симлинка вида %SYSTEMDRIVE%\Users -> %TARGETDRIVE%\Users. Говоря по честному - костыль.
Второй - интереснее и... изящнее, что ли. Спасибо Kari за прекрасный материал о том, как нужного эффекта добиться на Windows 8. Вся штука в том, что этот способо так же успешно работает и на Windows 7. Для реализации нам понадобятся следующие компоненты:
1. Имеющаяся система (или система, завершающая свою установку прямо в данный момент, что еще лучше)
2. Дистрибутив, с которого система была установлена.
Поскольку моя виртуальная машина уже была установлена, рассмотрю вариант с уже имеющейся ОС.
Итак, первый шаг - загрузка в режиме аудита. Выполняется довольно просто:

C:\Windows\System32\Sysprep\Sysprep.exe /audit /reboot

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



В зависимости от конкретной системы нужно поменять три параметра:
processorArchitecture="x86" - тип архитектуры. Если у вас 32-битный процессор (и соотвественно, 32-битная ОС), то этот параметр можно оставить как есть: х86. Если же имеем дело с 64-битной системой, вместо x86 нужно будет прописать amd64.
E:\Users - каталог, куда будут перемещены пользовательские профили. В моем случае это папка Users, расположенная на диске E:
source="wim:D:/sources/install.wim#Windows 7" - источник файлов в дистрибутиве. Фактически, тут нужно поменять только букву диска. В моем случае это был диск D:
"Обработка напильником" закончена. Сохраняем этот сценарий в виде xml-файла, например, relocation.xml
Следующий шаг - произнесение заклинания, которое мы подготовили :) Let the magic begin!

c:\Windows\System32\Sysprep\sysprep /audit /reboot /unattend:E:\relocate.xml

Снова будет вызвана утилита Sysprep, только уже с ключом /unattend, в котором прописан путь к подготовленному ранее сценарию. Система уйдет в перезагрузку, затем снова запустится в режиме аудита, и снова будет вызван Sysprep. Последний шаг - выход из него в режим Out-of-Box-Experience. Для этого в запущенном Sysprep в поле System Cleanup Action выбираем Enter System Out-of-Box Experience (OOBE), а в Shutdown Options - Reboot.
И теперь останется только дождаться запуска системы в обычном режиме с показом окна Windows Welcome. Почему придется ждать? Потому что именно в течение этой перезагрузки будет выполнено фактическое перемещение каталога Users. Если он был огромным, соотвественно, понадобится больше времени.

Что ж, тест на виртуалке пройден успешно. Дело за тестах в "лабораторной" среде.
P.S. Если имеем дело с Windows 8, то, согласно, записи Kari, нужно потушить одну из служб: Windows Media Player Network Sharing Service. Как выяснилось, для Windows 7 это не обязательно.

@музыка: Julie Fowlis - Hùg Air A' Bhonaid Mhòir

@темы: Security

We rise up for the things we believe in over and over again
Ситуаций, в которых ОС выпадает в печально известный Синий Экран Смерти, мне довелось повидать немало. Но увиденное сегодня заставило задуматься о том, что скорее всего мне предстоит увидеть еще очень много.
Итак, вводная. Общий ресурс в Novell network, на рабочей станции стоит клиент этой сети, который делает работу с ней прозрачной для сотрудника. На этом ресурсе в одной из подпапок лежит некий Excel файл в режиме совместного доступа. Оставлю за кадром мое мнение о таких файлах, он есть и с ним работают аж три человека. Один из них вносит изменения в файл, нажимает кнопку Сохранить...
Дальнейшее вызывает шок. Компьютер сохраняющего зависает минут на пять, а вот системы двух остальных сотрудников почти синхронно валятся в BSOD с ошибкой stop 0x8E (Page Fault in Non-Paged Area - да-да, наше всё) и руганью на драйвер Ncpl.sys. Примечательно то, что по завершении тех пяти минут ожидания документ все же сохраняется.
Беглый запрос по имени этого драйвера выдает первым же результатом статью в базе знаний самих Novell, вот она:
BSOD / System Crash when accessing Novell volumes - Клац!
К сожалению, в ней не раскрываются причины, по которым происходит такой фатальный сбой, но рецепт исправления есть - поставить на клиент Novell третий Service Pack. Проблема в том, что просто так его поставить прав нет - ПО должно пройти тестирование в текущей среде. А этим заведуют иные люди, нежели наш отдел.
Что ж, запрос отправили, дальнейшее покажет лишь время.

@музыка: Karunesh - Tibet

We rise up for the things we believe in over and over again

Экзамен сдан еще 4 октября. Пакет пришел только пару дней назад, но он все же пришел.




Идем дальше...


@темы: VMWare, Virtualization

We rise up for the things we believe in over and over again

Да-да, на дворе уже 2013 год за половину перевалил, но тут по-прежнему используется Exchange 2003. Впрочем, не об этом речь.
В общем и целом, начало этому посту было положено уже давно. История с лог-файлами, которая в моем личном хит-параде стоит на первом месте. Вот она: Клац!
А теперь ее продолжение, и хочется верить, что окончание.
Да, была авария на почтовом сервере. Да, есть бекап. Да, базу из него поднять можно и нужно.
Поскольку на том диске, где база и ее логи лежали изначально, место уже практически исчерпано (Zabbix об этом орет уже вторую неделю), решил восстановить базу на другой раздел, побольше. Памятуя о том, что у нас на разных разделах разный размер сектора (см. ту самую ссылку), размещаю файлы баз данных и логов Recovery Storage Group на новом разделе, а так называемый патч-файл (restore.env) и временные логи транзакций - на старом разделе. Для них места хватит, и на работу самого сервера еще останется. Все распланировано, запускается процесс восстановления. Файлы полного бекапа послушно кладутся на свои места, временные логи так же послушно кладутся на старый раздел. Поверх этого всего накатываются логи из Differential-бекапа, чтобы минимизировать потери почты. Дается команда Commit logs... И понимаем, что эта самая последняя команда не выполняется. Дает ошибку следующего вида:
Operation terminated with error -546 (JET_errLogSectorSizeMismatch, the log file sector size does not match the current volume's sector size)

Но как же так? ОК, сделаем то же самое, только руками, а не полагаясь на работу Backup Exec. Открываем командную строку, переходим в каталог с временными логами, даем слеующее:
eseutil /cc

Принудительное считывание и применение логов, обозначенных в файле restore.env, лежащем в текущем каталоге. Команда приводит к той же самой ошибке. Что за чертовщина? Следующая проверка:
eseutil /ml %LOG_FILE_NAME%
fsutil fsinfo ntfsinfo %DRIVE_NAME%


Размеры секторов совпадают. До байта. В чем проблема?
Начинаю вспоминать, как вообще нарвался на эту ошибку впервые. Ошибка появлялась при перенесении имеющихся логов группы хранения. В то же время, если их создать заново - все базы группы хранения спокойно примонтируются, а новые логи будут привязаны к разделу с новым размером сектора. Так, создание логов. Начинаем прикидывать, где у нас создаются логи при восстановлении баз. А создаются они в папке логов Recovery Storage Group. Чем черт не шутит, а почему бы не расположить их на том же разделе, что и временные логи из бекапа, где размер сектора тот, что надо?
Вы не поверите, это сработало. Даже при создании логов RSG учитывается размер сектора диска, где они будут лежать. Еще одно откровение, ничего не скажешь. Какое же счатье было читать в системном журнале сообщения следующего вида:
Information Store (992) Restore0008: The database engine has begun replaying logfile N:\Temp\SG1\E0085AEA.log.

@музыка: One More Time - Song of Fete

@темы: MS Exchange

We rise up for the things we believe in over and over again

Когда-то давно довелось мне написать скрипт автоматической загрузки Kaspersky Virus Removal Tool. Как показало время - запись та была достаточно популярной. Как и сам KVRT. Поскольку же прогресс не стоит на месте, и многие все же переходят на ОС Windows 7 и выше, специально для них (и для себя любимого в их числе) переработал тот сценарий, переписав его в Powershell. Вон он:

Download KVRT.ps1

Обработка напильником стандартная: в строке $folder = "d:\KVRT" прописать имя того каталога, куда будет складываться загружаемый файл.
ВНИМАНИЕ! Содержимое каталога, указанного в переменной $folder, будет удалено в процессе выполнения этого сценария. Это сделано специально, исходя из собственных нужд. Если очистка каталога нежелательна, нужно закомментировать строку remove-item $folder\*.* при помощи символа # (или вообще удалить ее).
Ну а о том, как можно Powershell-скрипт запускать по расписанию, в сети материала вагоны )

@музыка: Adrian von Ziegler - The Stormbringer

@темы: Viruses and Spam, PowerShell, Scripting, Kaspersky Lab

We rise up for the things we believe in over and over again

Собственно, за это ребятам из РосТелеКома надо кое-что отрезать, размножаться такие не должны.
 photo Capture_zpse9afd6e5.png

Поясню, что на картинке. При попытке открыть вложение-картинку из письма в Gmail эта картинка загружается с сайта Googleusercontent.com, все вложения там хранятся. Сейчас же при попытке обратиться к этому сайту по защищенному протоколу (а google уже давно работает только по нему), браузер напарывается на то, что к этому сайту привязан (с какой-то стати) совершенно левый сертификат от РосТелеКома. И, естественно, вопит о том, что "вас пытаются наколоть". Ну а если проигнорировать это предупреждение и сказать "пусти меня туда все равно" - нарвемся на стандартную плашку от РТК, сообщающую, что googleusercontent.com заблокирован, как хранящий недопустимую в нашей стране информацию.
Как я уже говорил, за подсовывание левого сертификата надо кое-что отрывать. Без наркоза...

UPD. По состоянию на 15:25 - блокировка снята. Но факта дебилизма это не отменяет.

@настроение: Enrage!

@темы: Этот безумный мир, Security

We rise up for the things we believe in over and over again

Встала задача - обновить наш антивирус. С версии 10.6 на версию 10.6 Service Pack 1. В принципе, это достигается при помощи внутренних средств обновления, но мне захотелось поднять полностью новый сервер и перевести клиентов на него. Потому как работа старого меня не устраивала, даже бекапы базы данных не делались, валились с ошибкой. Впрочем, это не удивительно, сервер этот был последовательно обновлен с 10 до 10.6. Наверняка уже столько хвостов осталось, что ужас. В общем - чистая установка - как всегда, лучший выход.
С самой установкой и настройкой проблем вообще никаких. С переносом клиентов, которые на текущий момент активны - тоже. А вот что делать с теми машинами, которые могут месяцами не включаться? Их ведь просто так не перетащишь, команду не дашь с административной консоли. Что ж, такую задачу решать уже доводилось - придется воспользоваться сценариями запуска компьютеров. В итоге клиент сам после запуска переползет, куда надо.
Основа сценария - маленькая утилитка IpXFer, которая и пинает клиента в нужную сторону. Выполняется на целевом клиенте с соотвествующими ключами от имени администратора или самой машины (если речь о сценарии запуска). Одновременно с этим не мешало бы проверять - а не переехал ли клиент уже на новый сервер. Ведь если он там - повторно перекидывать его туда не надо.
Начнем с проверки. Кучу своих настроек клиент Trend Micro Office Scan хранит вот тут:
HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion
Нас очень сильно интересует параметр Server, в котором и прописывается "место жительства" клиента. Выполнив команду
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion" /v Server
получаем требуемое.
Теперь полученное нужно проверить - что же там лежит. Ради интереса воспользовался вот таким методом:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion" /v Server | findstr "%ServerName%"
Сначала мы получаем значение параметра Server, затем в полученном пытаемся найти имя нашего сервера. Если найдем, все в порядке. Если не найдем - получим ошибку в системной переменной %ErrorLevel%. Следующий шаг - проверка этой переменной. Если она равна нулю - не делать ничего, клиент уже на "месте прописки". Если же не равно нулю - значит клиент у нас бродяжничает, и его пора пришпилить на место.
Отдельный вопрос - x64 системы. У них расположение нужного нам ключа реестра немного отличается:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TrendMicro\PC-cillinNTCorp\CurrentVersion
Следовательно, нам нужно будет еще проверять, на каком типе систем исполняется скрипт. Ну а потом, после всех проверок, запустить нужную утилитку с кучей параметров.
Целиком весь сценарий будет выглядеть вот так:

echo off
if exist "%systemdrive%\program Files (x86)" (goto x64) else (goto x86)
:x86
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion" /v Server | findstr "%ServerName%"
if NOT %errorlevel% == 0 call \\server\share\ipxfer.exe -s %ServerName% -p %HTTP_Port_Number% -m 1 -c %Client_Port_Number%
goto rest

:x64
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TrendMicro\PC-cillinNTCorp\CurrentVersion" /v Server | findstr "%ServerName%"
if NOT %errorlevel% == 0 call \\server\share\ipxfer_x64.exe -s %ServerName% -p %HTTP_Port_Number% -m 1 -c %Client_Port_Number%

:rest

Обработка напильником - стандартная. Вместо %ServerName%, %HTTP_Port_Number%, %Client_Port_Number% подставить нужные значения и положить обе утилитки ipxfer и ipxfer_x64 в какую-либо общую папку, куда могут обратиться компьютеры домена.

P.S> После обновления клиента у него меняется значок. Кто-то из "бдительных" пользователей это заметил и тут же начал трезвонить в IT отдел - "Помогите, у меня на компьютере вирус под названием Trend Micro Office Scan!". Ирония в том, что сотрудник сам не знает, на сколько же он прав...

@темы: Security

We rise up for the things we believe in over and over again

Нет, сегодня речь пойдет не о таких вещах, как RDP или LogMeIn. На днях приехала первая из трех заказанных карт удаленного управления серверами Aten IP8000. Обычная PCI плата, которая добавляет функционал iLO (это если в привычных мне терминах HP), а по-русски - возможность управлять сервером на протяжении всего времени его работы, от самого старта по питанию до выключения этого самого питания. Ну и бонусом приятные штуки как Remote Media и ему подобное.
Все бы ничего, но захотелось настроить авторизацию на этой карте через Active Directory, это банально удобнее. Все необходимые настройки для этого есть. Открываем форму, вбиваем все необходимые данные:
 photo IP800_zps66ce820e.png

Отличие от этого скрина в том, что галку Enable Authorization я тогда поставил.
Сохраняем настройки, даем рестарт карты... и понимаем, что LDAP-авторизация не заработала. Перепроверяем настройки еще раз - понимаем, что все внесено верно, но не работает. Штудируем мануал и видим, что в мануале раздел LDAP вообще никак не освещен. Что за...
Гугл, запрос. Ответом стала шокирующая информация из инструкции к другому KVM той же компании - для того, чтобы работала авторизация через MS AD, нужно расширить схему AD! Засада, потому что таких прав у меня нет, да и для чего такие сложности, вообще неясно.
Еще более вдумчивое изучение того же справочного файла сказало: отставить панику, сейчас все сделаем. И действительно, все сделали. Теперь по шагам:
1. Выбор между LDAP или LDAPS. Тут все очевидно - что используется, то и нужно выбирать, причем LDAPS предпочтительнее. Негоже пересылать информацию об учетных записях в открытом виде (привет старому доброму PsExec).
2. LDAP Server IP, Port. Тоже все понятно, где LDAP развернут - тот IP адрес и подставляем. Порты в подавляющем большинстве случаев используются стандартные.
3. Timeout. Как долго наша карточка будет ждать ответа от LDAP. Тоже ничего особенного.
4. LDAP Administrator DN. Имя административной учетной записи, от которой будут происходить операции в AD. До сих пор не могу в толк взять, для чего здесь нужно именно административную запись вводить. Ведь карта в самой AD ничего не меняет, а читать из каталога позволено всем. Но делать нечего, вводим учетку в формате:
CN=username,OU=users,DC=example,DC=com
5. LDAP Administrator Password. Все просто - пароль указанной административной учетки.
6. Search DN. Вот здесь уже интереснее. Это имя контейнера, в котором, а также во всех его подконтейнерах, учетные записи будут иметь право логина на нашу карточку.
7. IP8000 Admin Group. Параметр, связанный с предыдущим. Члены указанной группы из AD будут обладать правами администратора и на карточке. Все остальные - только базовыми, об этом чуть ниже.
И остается та самая галочка Enable Authorization. Именно она определяет логику работы карточки с AD. Итак:
1. Параметр включен. Для определения того, кто может зайти, кто не может, а кто является администратором, карточка будет искать среди атрибутов учетных записей два особенных, которые и создаются во время расширения схемы AD.
2. Параметр выключен. На карточку смогут зайти все пользователи, чьи учетные записи находятся в OU, указанном в пункте 6, и будут обладать урезанными правами. Пользователи же, чьи учетные записи находятся в группе, указанной в пункте 7, смогут делать с карточкой что угодно. Изменения схемы в этом случае не требуется.
Таким образом, параметр Enable Authorization я отключил, после чего авторизация через LDAP заработала так, как требовалось.
И отдельно о правах пользователей. Ради теста зашел под специальной технической учеткой, созданной для различного рода проверок, с ограниченными правами на карточке. Каким же было мое удивление, когда я увидел, что такой учетке доступен раздел Power Management и кнопки выключения сервера и его жесткой перезагрузки. Эта засада будет подстерегать тех, у кого административные учетные записи лежат в структуре AD в том же OU, что и обычные учетки сотрудников. Обходится этот момент просто - нужно создать отдельную OU, перенести туда нужные учетки, и именно эту OU прописать в настройках LDAP-авторизации карты. После этого обычным учетным записям зайти на нее просто не удастся, они будут отфильтрованы, а административные учетки будут обладать всеми необходимыми правами.

@темы: Этот безумный мир, Security

We rise up for the things we believe in over and over again

История, развернувшаяся буквально на моих глазах сегодня с утра.
Итак, дано - Android Galaxy Tab. Человек, обладающим им, купил(!) в Google Play(!!!) фильм и вздумал его на своем устройстве посмотреть. Я вообще впервые в жизни увидел человека, который в GPlay что-то приобрел, учитывая, что в России этот сервис запустился на полную катушку совсем недавно. Ну ладно, купил и купил. А что с ним дальше делать-то? Известно, что, качать. 1.2 Гб учебного пособия по суициду под названием Анна Каренина. Одна беда - это 1.2 Гб трафика, который на SIM далеко не бесплатен, потому-то человек в наш отдел и пришел, присосаться к местному запароленному Wifi. Ну да ладно, выпустили. Фильм стащился, все замечательно. Нажимаем на нем в списке загрузок, планшет думает секунд 10, после чего с критом вышибает процесс, отвечающий за обработку видеофайлов.
Почесали тыковки, перезагрузили аппарат, мало ли... После перезагрузки ничего не изменилось. Ладно, ок, нельзя вызвать из окна загрузок как в приличном виндовом DDE, не вопрос, откроем в приложении. В качестве этого самого приложения выступает Play: Фильмы. Запускаем его, заходим в учетную запись, вызываем там список уже купленного добра. Добро показано, что только и ждет, когда его просмотрят, и будет ждать еще 1 день и 1 час. Да, да, та самая аренда контента во всем своем великолепии. То есть мы уже на часах, а добраться до контента не можем.
Запускаем фильм оттуда - получаем прекрасное - 521 - Ошибка воспроизведения. И контакты для обращения в службу поддержки Yotaplay. Ну хорошо, напарник расчехляет телефон (я не особо люблю болтать, мне переписка ближе) и начинается цирк.
До поддержки дозвонились быстро. Мальчик бодро отвечает, мол, обновите, пожалуйста, наше ПО до последней версии. Проверяем, действительно, на планшете версия древнее. Обновили. ОК, запускайте. Запускаем, ошибка осталась, но на этот раз тысача-какая-то. Ладно, почистите кэш приложения. ОК, заходим в менеджер приложений планшета, выбираем там нужное нам ПО, открываем его свойства, сносим кэш. Результат - тот же.
Владелец планшета уже нервно хихикает. Я откровенно стебусь над всем этим, как обладатель телефона на андроиде. Коллега на телефоне просто в шоке. Продолжаем диалог с поддержкой, в течение которого проходит рекомендация: снесите все данные этого приложения. Да-да, это означает снести фильм в том числе. Ок, кнопочка Remove Data отрабатывает на ура. Заходим в учетную запись приложения уже с нуля, видим, что ни одного фильма нет, но нам предлагают "Анночку" либо посмотреть в он-лайн режиме, либо скачать заново. Ради интереса по подсказке мальчика из техподдержки включаем он-лайн просмотр и, о, чудо, видим нужное. После чего мальчик радостно заявляет, что поскольку у нас фильм был скачан в предыдущей версии ПО, то после обновления нужно все закачанное снести и перекачать заново уже в новой версии.
Дальше трубку берет владелец планшета и оформляет заявку на возврат средств за непросмотренный фильм, а сам фильм удаляет из учетной записи, благополучно выключая планшет.
Ну и как полагается по законам жанра - вопросы по истории и мораль оной.
Вопросы довольно просты. "Почему?" и "Кто виноват?". Почему при обновлении версии страдает возможность воспроизведения контента, хотя сохранение такой возможности - базовый принцип работы. И кто виноват, что в "production" вылезло такое? Тем более, что за это взимается вполне себе определенная плата во вполне реальной валюте.
А что до морали... думаю, каждый сфомирует ее для себя сам.

@музыка: Metal Gear Rising OST - LQ84i battle

@темы: Этот безумный мир, Android