John 的个人资料Старый нудила日志列表SkyDrive 工具 帮助

日志


10月23日

ЧуднЫе дела с SQL DMO

Есть у меня несколько скриптиков на SQL DMO (знаю что древнятина, но переписывать лень). Занимался этот скриптик забавной штукой - выставлял правильный fileGrothType после "рукоприкладства" разных backup-ов и админов. Выглядел примерно так :
 
DBName = "MyBase"
 
Set oSQLServer = CreateObject("SQLDMO.SQLServer")
oSQLServer.LoginTimeout = 30
oSQLServer.LoginSecure = True
oSQLServer.Connect "localhost"
             
oSQLServer.Databases(DBName).TransactionLog.LogFiles(1).FileGrowthType = 0
 
И всё. Вообщем ничего сложного. Но заметл я , что перестал он этот "FileGrowthType" выставлять. Т.е. буквально за ним читаешь его-же, а он там не 0.
Чесал я репу. И уже стал пугаться, что что-то изменили в 2008-м сервере с совместимостью с DMO (сколько можно??!!! тащить за собой это старьё, наверное они подумали). Но всё остальное-то нормально делается. А вот именно FileGrowthType в этом скрипте не выставляется. Полдня бился. Не выставляется и именно в этом скрипте. Решене - пипец :
Вместо
 
oSQLServer.Databases(DBName).TransactionLog.LogFiles(1).FileGrowthType = 0
 
Надо
 
oSQLServer.Databases(DBName).TransactionLog.LogFiles(1).FileGrowthType = 0
oSQLServer.Databases(DBName).TransactionLog.LogFiles(1).FileGrowth     = 10

 
Т.е. любое ещё действие с настройками базы и всё применяется замечательно. Казалось бы "при чём тут Microsoft"? ;-)))))) Но "ненатуральненько так выглядит ;-)))))
 

Кто такой Генерал Фелуре ...

Выдержка попыток залезть на один из ftp серверов :
 
#Software: Microsoft Internet Information Services 7.0
#Version: 1.0
#Date: 2009-08-26 09:47:32
#Fields: date time c-ip s-port cs-method cs-uri-stem sc-status sc-win32-status sc-substatus x-session x-fullpath
2009-08-26 13:24:02 210.56.192.51 21 USER admin 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:24:24 210.56.192.51 21 USER ftp 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:24:46 210.56.192.51 21 USER oracle 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:25:07 210.56.192.51 21 USER mysql 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:25:29 210.56.192.51 21 USER nagios 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:25:53 210.56.192.51 21 USER helen 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:26:37 210.56.192.51 21 USER web 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:27:01 210.56.192.51 21 USER webserver 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:27:24 210.56.192.51 21 USER red 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:27:45 210.56.192.51 21 USER java 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
2009-08-26 13:28:06 210.56.192.51 21 USER streaming 331 0 0 5903e89e-51a6-43b3-a1cc-faa8c36cca0c -
 
Всё понимаю, но кто такая "helen" и почему именно она, а не "john" какой нибудь? И почему только красный ("red")? Откуда любовь именно к этому цвету? "Шаррррада" (с) "Малыш" А.Б.С.
10月16日

Block IP address

Понадобилось мне блочить плохих пользователей через firewall. Написался забавный скрипт.
Что делает?
Парсит список лог фалов задаваемый маской. Выявляет упоминание IP адресов в этих файлах и формирует firewall-е правила по их блокировке. Расчитано на сутки (т.е. через 23 часа происходит реабилитация IP адреса.
 
Чуть подробне :
Скрипт стОит запускать раз в час. Файлы по маске смотрятся в текущем каталоге (для тех кто будет делать "запланированную задачу")
Сначала disable-иться правило "следующего часа" (как раз для "реабилитации IP". если за час не нагадит в лог файл, то в список и не попадёт).
Потом формируется список IP упоминавшихся в LOG файлах с течении последних 60 минут (параметр /TimeOld). чтобы не просматривать все файлы, смотрится дата модификации файла и если она раньше TimeOld, то файл даже не просматривается. Т.к. ввиду разных причин командная строка ограничена (я поставил 6000 символов в начале скрипта - iCmdLen = 6000 ), то не все отмеченные в логе N раз (/Count =  2000) могут попасть в правило, но скорее всего попадут в следующем часу. По умолчанию файл считается W3C логом с time stamp в GMT, т.е. читается комментарий #Fields: и определяются позиции параметров "date", "time" и "c-ip". Но можно задать позиции "руками" (встроенный help подскажет как"). Список запихивается в правило с именем XX (час запуска скрипта). Если правило отсутствует - оно создаётся.
 
Вот такой весёлый скрипт. Нам помог утихомирить небольшой напавший на нас BotNet. Идея мне понравилась тем, что как-то легко "самореализовалась" система реабилитации IP.
 
P.S. не всё оптимально (лишний раз формирование словаря и отсутствие некоторых проверок), зато наглядно :-)
 
P.P.S. возникнет желание - можно докастомизировать (указание каталогов, маски названий правил и произвольная реабилитация, например 3 дня) ...
 
7月7日

Письма наших писателей.

Письмо клиента :
 
> имеется простое ASP.NET приложение, которое использует штатные контролы DetailsView,
> LoginView и проч. Текстовые метки компонентов там зависят от установленного значения из
> web.config  system.web : globalication : culture/uiculture. Локально на компьютере разработчика все
> работае и переключается согласно документации MSDN.
 
Сразу вспомнился "Начальник чукотки" и эпизод, когда американец продаёт трубы от патефона (для родившихся в эпоху развитого капитализма - американец давал послушать патефон, потом отрывал трубу и продавал чукче, как "музыкальная шайтан труба").
Вот так и программисты : показывают на своей машине "Всё работает". Клиент несёт на хостинг - не работает. Кто виноват? Программист? ЩА! Хостер конечно. А клиент, естественно, прав. Раз программист написал в Web.Config :
    <globalization
      enableClientBasedCulture="true"
      fileEncoding="utf-8"
      requestEncoding="utf-8"
      responseEncoding="utf-8"
      culture="auto"
      uiCulture="auto"
    />
И у него по русски, то значит всё правильно. А хостер систему настраивать не умеет. Как в анекдоте : "Я хочу что-бы машина была цвета бордо". Делают. "Не понял. Пацаны - бордо это, разве, не зелёный?" auto - это, разве, не русский?
 
Это реклама "марсианской логики" и патефоннных труб.
6月10日

Вот что с серверами Service Pack делает.

Вот один из наших серверов :
 
Не ясно, насколько нужно Web Edition роль WSUS, но Application Server нужна "по любому".
Официально объявляется Service Pack 2. УРА !!! Или нет???
Вот поставленый сервер с SP2 :
 
Опа. Заметили что число ролей "уполовинилось". Ну ладно FSRM (File Services) вроде и не обещали, но вот Application - то за что?
 
Сел думать, нужен мне SP2 или подождать (только чего?)?
 
Update.
Хммм .... всё оказалось несколько проще :-))) Роли "уехали" в "фичи". Т.е. Application, подразумевающая WCF HTTP Activation, стала одной из возможностей .NET Framework, а File Server просто стал возможностью FSRM (что и показано на рисунке):
 
Продолжаем издеваться над дистрибутивами :-) Том както умудрился поставить сервер с одной ролью :-))))
 
5月18日

Тщательнее надо, господа из MS.

Есть такой web site - winqual.microsoft.com. Это тот, который информацию о драйверах, update-ах и тому подобных вещах выдаёт. Тыркнулся я в него с приходом нового драйвера. И "не попал" ... Т.е. нет такого, сказал мой браузер. Разобиделся я и решил проверить данную информацию :
 
> nslookup winqual.microsoft.com
 
Non-authoritative answer:
Name:    winqual.partners.extranet.microsoft.com
Address:  213.199.138.104
Aliases:  winqual.microsoft.com
 
Да нет. вроде существут. Т.к. доверие к браузеру уже подорвано, лезем руками :
 
HTTP/1.1 200 OK
Content-Length: 1433
Content-Type: text/html
Content-Location:
http://winqual.microsoft.com/iisstart.htm
Last-Modified: Thu, 24 Mar 2005 17:19:08 GMT
Accept-Ranges: bytes
ETag: "0ce4f969530c51:9526a"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Mon, 18 May 2009 14:45:02 GMT
Connection: close
 
Вам тоже нравится выделенная строчка? ;-))))) О как. iisstart.htm, почти без присмотра? ;-))))
Дальше притвряемся совсем глупымии и делаем telnet на 80-й порт с фразой GET /<cr-lf> :
 
HTTP/1.1 302 Found
Date: Mon, 18 May 2009 14:48:28 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location:
https://10.253.212.78/default.aspx
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 151
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="
https://10.253.212.78/default.aspx">here</a>.</h2>
</body></html>

Connection to host lost.
 
Расписные красавцы :-) Т.е. если ещё радом стоящий DNS-ик найти, то можно и про MS-овский intranet узнать. Хотя, судя по имени winqual.partners.extranet.microsoft.com, это не совсем MS и не совсем intranet. Но я-бы, всё одно, не подставлялся бы так.
 
4月15日

Ложечки-то нашлись ...

Тут меня спросили, и я решил ответить :
К посту про IIS.CertObj - "ложечки нашлись". Т.е. IIS.CertObj в IIS7 эмулируется (что не может не радовать. Уж больно удобен). НО! Он устанавливается в случае выбора не "IIS 6 Metabase Compatibility" и не с "IIS 6 Scripting Tools", а с "IIS 6 Management Console" (которая мне там нафиг не нужна).
"Где логика, где разум?" (С) Анекдот
 

О пользе документирования (MS - ненатуралы)

Нужно выполнить доооооолгий запрос на SQL-ле (ну ещё чутка обработать данные перед этим). "Нет ничего проще" подумал я и наваял на VBScript-е небольшой код :
 
Set oSQLBase = CreateObject("ADODB.Connection")
oSQLBase.ConnectionTimeout = 86400
oSQLBase.CommandTimeout    = 86400
oSQLBase.Open
Set oRet = oSQLBase.Execute( "EXEC LoooongQuery" )
oSQLBase.Close
Т.к. знаю, что выполняться должно доооолго, то смело ставлю суточный (86400 сек.) timeout (потом оказалось что там всё ещё дольше :-) ).
Выполняем. И получаем - Query Timeout ... И подозрительно быстро. Начинаю искать и гуглить. Даже попробовал заводить отдельный объект ADODB.Command и выставлять у него timeout. Всё одно рубит через 15 сек ... Бился полдня. ПЛЮНУЛ. Решил сделать через sqlcmd. Запускаю и получаю по морде :
 
>sqlcmd -t 86400
Sqlcmd: '-t 86400': Timeout has to be a number between 0 and 65535.
Во как!  И что главное, ни в одном  (суки!!!) руководстве, как от MS, так и от сторонних источников пределы этого параметра не обозначены. Мало того, скрипт это "глотает" МОЛЧА и ничего не делает (т.е. timeout остается равным default, т.е. 15 сек.), так ещё и в самом параметре находится число которое указал я, а не "действующее".
"Программисты обладают альтернативным мышлением" (с) Мой.
 

Тихо шифером шурша ....

Читаю сегодня про уязвимость :
 
Повышение привилегий в функции SearchPath() в Microsoft Windows
 
Описание:
...
Уязвимость позволяет удаленному пользователю скомпрометировать целевую систему.
Уязвимость существует из-за ошибки в функции SearchPath() при обнаружении и открытии файлов на системе. Злоумышленник может обманом заставить пользователя загрузить на систему специально сформированный файл и заставить пользователя запустить приложение, способное при определенных обстоятельствах загрузить файл.
...
 
"Таааак ... У меня что-то с головой" (С) френен Бок
Т.е. играем в "армянский комсомол" (сами себе создаём трудности и сами их, с успехом, преодолеваем). Завтавить загрузить файл, заставить запустить программу, чтобы загрузить файл. "что-то новенькое в любовном лексиконе нашего двора" (с) "Стакан воды"
Вспоминается анекдот про программиста "Намылить, смыть, повторить ..."
 
P.S. Объяснять зачем и что, мне не надо. Просто фраза построена - ВИЗГ!
 
4月11日

Ping from alias IP или MS - ненатуралы.

Зашел ко мне парень из DC (Data Center) с некой проблемой:
Очень часто устанавливая пользователям сервера, нужно инициировать сетевую деятельность с alias IP, т.е. дополнительного IP на интерфейсе (некая защита по arp cache). "Да легко" - сказал я - "Ping-ани default gateway". Услышал законный вопрос - "Как?". "Ну ... " - сказад я - "Ping -S, например ...". На что услашал "САМ ПОПИНГУЙ!!!".
И так. Хммм ... Сказал я ... Ну и попингую ... (У меня Win2003) :
 
> ping -S 10.10.10.10 10.10.10.1
10.10.10.10 is not a valid address.
 
Во как! Курим help :
 
>ping -?
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
Options:
...........
    -S srcaddr     Source address to use (IPv6-only).
...........
Во как! IPv6 и баста! Нужно срочно искать замену. .... Прошло немного времени ... Эврика! PathPing нас спасёт :
> pathping -?
Usage: pathping [-g host-list] [-h maximum_hops] [-i address] [-n]
                [-p period] [-q num_queries] [-w timeout]
                [-4] [-6] target_name
Options:
.........
    -i address       Use the specified source address.
.........
Уф ... Проверил - работает. Можно расслабиться? Ну на всякий случай проверим на Win2008 :
Help на pathping не отличется, значит всё хорошо? :
 
> pathping -i 10.10.10.10 10.10.10.1
Tracing route to 10.10.10.1 over a maximum of 30 hops

The option -i is only supported for IPv6.
Вот те ХРЕН!!! И что делать? Прошло немного времени ... А как там у нас поживает ping?:
 
 > ping -?
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
Options:
........
    -S srcaddr     Source address to use.
........
Я один заметил отсутствие упоминания IPv6? Проверка показала правильность моей догадки.
 
НУ И КТО ТУТ НАТУРАЛ???? :-)))))))))))
 
4月10日

А вы спрашиваете откуда беруться "красноглазики"

При поиске в сети нарвался на шедевральную фразу :
" .. ping сетевой эквивалент звукового устройства ..."
Ну какой "администратор" из такого, простите, вырастет ...
3月2日

Письма ... Кхм. _НАШИХ_ писателей.

Идёт переписка с клиентом, у которого не совсем корректно работают скрипты. Не сказать что очень долгая, но идёт. И ТУТ ВДРУГ сотрудник поддержки выдаёт ответ клиенту:
 
>       Итак, главный вопрос: кто должен выправлять ситуацию, и какие
> перспективы/рекомендации по ее исправлению?
>

Обращае Ваще внимание на то,что,  подобная ошибка служитъ н фопйсувх с
разрешения дежурного по столовой.

Резервную копию Вы найдете на <там-то>.

Всего доброго.
 
Что он курил при этом, выяснить не удалось (было лень). НО! Спасибо адекватному клиенту. Ответ клиента порадовал :
 
   Здравствуйте, ***** !
   Вначале - небольшое лирическое вступление:

       Ах, дежурный по столовой,
       Вот и ты с своей обновой,
       С фопйсувх - ом на подносе
       И с ответом на вопросе!

    А если серьезно, то описанная в моем письме проблема была успешно
разрешена программистом сайта .........
 
Во как !!! Вот таких-бы адекватных клиентов, да с пол мульёна :-)))))
 
P.S. Но что он курил НАДО УЗНАТЬ :-))))
 
2月3日

Альтернативно одарённые FTP клиенты.

Жалуется клиент - "Постоянно 550-я ошибка. Вы там поправьте ...".
Смотрю логи (с моими коментариями):
 
#Time    Command   Parameter                  Error WorkDir
21:08:49 CWD       AEEDA0CC.htm               550   /AEEDA0CC.htm
# Товарисч! Не надо "заходить" в файл.
# Сделать его "рабочим каталогом" не получится
21:08:50 LIST      AEEDA0CC.htm               550   /AEEDA0CC.htm
# Ну нет такого файла.
21:08:50 LIST      AEEDA0CC.htm               550   /AEEDA0CC.htm
# С первого раза мы не понимаем.
21:08:50 LIST      AEEDA0CC.htm               550   /AEEDA0CC.htm
# Со второго тоже ...
21:08:50 DELE      AEEDA0CC.htm               550   /AEEDA0CC.htm
# Логика отличная. Что нельзя съесть или трахнуть, нужно обоссать.
# Т.е. Если в него нельзя перейти или посмотреть, его надо удалить :-))))
21:08:51 CWD       AEC4AA06.htm               550   /AEC4AA06.htm
21:08:54 DELE      AEC4AA06.htm               250   /AEC4AA06.htm
# Логику вот этого понять не могу. Попытка зайти в файл как в каталог
# и потом его удаление.
21:09:05 CWD       /www                       550   /www
21:09:05 CWD       /www                       550   /www
21:09:05 MKD       /www                       257   /www
21:09:05 CWD       /www                       250   /www
# Разговор клиента (К) и сервера (С):
# К - ЗАЙТИ В КАТАЛОГ!
# С - ФИГ!
# К - ЗАЙТИ В КАТАЛОГ!
# С - ФИГ!
# К - ДОГАДА!!! А создай каталог!
# С - Пожалуйста!
# К - ЗАЙТИ В КАТАЛОГ!
# С - Пожалуйста!
21:09:06 CWD       AAC52858.htm               550   /www/AAC52858.htm
21:09:06 RNFR      aAC52858.htm               350   /www/aAC52858.htm
21:09:06 RNTO      AC528589.htm               250   /www/AC528589.htm
21:09:07 LIST      AAC52858.htm               550   /www/AAC52858.htm
21:09:07 LIST      AAC52858.htm               550   /www/AAC52858.htm
21:09:07 LIST      AAC52858.htm               550   /www/AAC52858.htm
21:09:07 DELE      AC528589.htm               250   /www/AC528589.htm
21:09:07 DELE      AAC52858.htm               550   /www/AAC52858.htm
# Разговор клиента (К) и сервера (С)
# К - Зайти в файл!
# С - Неумею я заходить в файлы!
# К - Тогда переименуй этот файл в "другой файл"!
# С - Да без вопросов!
# К - Покажи мне файл!
# C - Хммм ... Ты чего? Мы-ж его только что переименовали! Не покажу.
# К - Покажи мне файл!
# К - Покажи мне файл!
# К - Покажи мне файл!
# К - Ну и фиг сним! Удали другой файл!
# С - Пожалуйста!
# К - Ну и фиг сним! Удали файл!
# С - Дурак? Мы-ж его переименовали!
 
Кто занает, что это за "альтернативно одарённый" FTP клиент?
Я-бы на месте сервера его вообще не пускал :-))))
 
1月22日

Remote Desktop Organizer

Работа с удалёнными машинами - это каждодневная необходимость.
99% - это RDP сессии. Оснастка "Remote Desktops" меня почти во всём устраивает, кроме нескольких мелочей:
- Нельзя отсортировать коннекты, так как я хочу. Они там появляются только в порядке добавления.
- Неплохо бы хранить коннекты в древовидном виде
- Хорошо бы видеть, к каким коннектам ты уже подсоединён (ну какой нибудь лампочкой подсветить)
 
Решил поискать. Ну не может такого быть, что бы только меня одного это не устраивало.
Навскидку нашел 3 решения. Остальное нужно как-то глубоко искать. (А. И безззплатно тоже это хочется :-) )
 
  Хммм ... Неплохо. Поставил. Почти всё то, что мне нужно. Но, естественно, несколько нареканий:
   а) Ограничения free версии - Limitations of vRD 2008 Express: up to 15 objects / 5 credentials storable / no Database-Modus available / duration is valid until 3-31-2009 (there will be a new version until end of duration). Кому-то может и хватит.
   б) Из вышесказанного вытекает, что ждём версию 2009, которая "на днях". Кстати, похоже, вкусная будет.
   в) 88$ - дороговато :-( А то купил бы. 30$ - сразу не раздумывая.
   г) Не поверите, коннекты по мере появления. И сортировать можно только в алфавитном порядке :-))))
 
А так, всё хорошо. Почти ничего лишнего + добротные хорошие прелести (наборы аккаунтов, групповой коннект и т.д.). Хотя нет приятностей типа - запуск программ сразу при коннекте и т.д., то, что может стандартный RDP клиент (могли бы посмотреть и сделать). Вообще подожду 2009-го и тогда погоняю :-)
 
  Вот так. Просто так и называется :-). Пример минимализма. Человеку, как и мне не хватало только деревяшечки коннектови сортировки их, так как я хочу. Отличная программа. НО! При двойном нажатии, зачем-то, создаёт новый коннект, а не фокусирует на уже существующем. Вот такая гадость :-( Всё хорошо, но вот этот момент очень не удобен. ОЧЕНЬ. Ну и, соответственно, нет подсветочки уже "законнекченных". Ну, до кучи, можно было бы и групповой коннект сделать и был бы идеал :-)
 
 Ну, куда ж без него. Идея - отлично. Реализация - пока на 3-ку. Как и всё в OpenSource - "не нравится? Сделай сам!". Вообще - пока сыр до невозможности. Эргономика - ни к чёрту. "Деревяшки" коннектов нет, есть "одноуровневое" таггирование (как они это называют). Многие действия - не очевидны и неудобны. Но пользоваться можно. Но оооочень сырой.
Позиционируется не как "сборщик коннектов", а как инструмент админа. И не безосновательно. Если руки не опустят - может получиться замечательная вещь. (Явный конкурент vRD)
 
Вот так. Нет в мире совершенства.
1月20日

Шарррррада

Заметка на полях
Делаем 2 файла. Text.txt и Text.txtMy (желательно именно эти имена, позже расскажу зачем)
Идём в командную строку :
>dir /B
Text.txt
Text.txtMy
 
Всё нормально. НО!
 
>dir /B *.txt
Text.txt
Text.txtMy
 
ОПА!!! Что за чёрт? По логике Text.txtMy под указанную wildcards не подходит. Может dir дурит?
 
>for %i in ( *.txt ) do @echo %i
Text.txt
Text.txtMy
 
Нее ... Это вообще логика глючит. Похоже они сами "*"-ку подставляют в конце? Проверим:
 
>dir /B *.tx
 
Тишина. Забавно. Это чем-же расширение txt так понравилось CMD?
Не буду томить. Ларчик просто открывается :-) :
 
>dir /X *.txt
 Volume in drive R is Vol
 Volume Serial Number is 2479-4AF2
 Directory of R:\Temp
20.01.2009  15:04                16              Text.txt
20.01.2009  15:03                20 TEXT~1.TXT   Text.txtMy
               2 File(s)             36 bytes
               0 Dir(s)  12 293 558 272 bytes free
 
Забава в том, что ищет и по короткому имени тоже, а показывает длинное ... Вот и сидишь, чешешь репу :-))))
1月15日

Ну кто тут "натурал"?

Сижу, никого не трогаю, примус починяю скриптик пишу. Задачка простая - сменить букву диска у диска, если он ужо M: (например). Сложности никакой. Просто ведь, да? diskpart нам в руки и делов на 5 мин. А нет. В MS работают НЕНАТУРАЛЫ!!!
Проверяю в коммандной строке :
> echo list volume | diskpart

Microsoft DiskPart version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: PC
DISKPART>
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     V                       DVD-ROM         0 B  Healthy
  Volume 1     C   BOOT         FAT    Partition    502 MB  Healthy    System
  Volume 2     D   SysDisk      NTFS   Partition     36 GB  Healthy    Boot
  Volume 3     I   Util         NTFS   Partition     40 GB  Healthy
  Volume 4     W                       DVD-ROM         0 B  Healthy
  Volume 5     R   Distrib      NTFS   Partition     77 GB  Healthy
DISKPART>
>
 
Отлично. Теперь парсим вывод и подаём на вход тому-же diskpart. Делов-то. НЕЕЕЕЕЕЕ..... Для уверенности запускаем команду ещё раз:
 
>echo list volume | diskpart
 
Microsoft DiskPart version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: PC
DISKPART>
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     R   Distrib      NTFS   Partition     77 GB  Healthy
  Volume 1     C   BOOT         FAT    Partition    502 MB  Healthy    System
  Volume 2     D   SysDisk      NTFS   Partition     36 GB  Healthy    Boot
  Volume 3     I   Util         NTFS   Partition     40 GB  Healthy
  Volume 4     W                       DVD-ROM         0 B  Healthy
  Volume 5     V                       DVD-ROM         0 B  Healthy
DISKPART>
 
НЕ ПОНЯЛ!!!! А ну повтори? :
>echo list volume | diskpart
Microsoft DiskPart version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: PC140
DISKPART>
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     R   Distrib      NTFS   Partition     77 GB  Healthy
  Volume 1     W                       DVD-ROM         0 B  Healthy
  Volume 2     V                       DVD-ROM         0 B  Healthy
  Volume 3     C   BOOT         FAT    Partition    502 MB  Healthy    System
  Volume 4     D   SysDisk      NTFS   Partition     36 GB  Healthy    Boot
  Volume 5     I   Util         NTFS   Partition     40 GB  Healthy
DISKPART>
 
ОПА!!!! Вот это фокус. учитывая, что присвоение буквы диска через assign требует volume, результат становится непредсказуемым.
Я один такой счастливчик?
 
<<<
- Правда ведь? Ну как тут все увяжешь? Девушки услышать пенье... И ведь не всякое пенье какое-нибудь, а чтобы девушка была юная, находилась вне его пути, да еще только после того, как у него про дорогу спросит... Разве же так можно? Разве такие вещи алгоритмизируются?
- Вряд ли, - сказал я. - Я бы не взялся.
>>>
(c) А.Б.С. "Понедельник начинается в субботу"
 
12月24日

VBScript - наше всё!!

Мдяяя ...
Странная штука получается. Попробуйте выполнить вот такой VBS скрипт :
 
WScript.Echo "Right    ->" & Now + TimeSerial(0,0,0)
WScript.Echo "Wrong    ->" & Now - TimeSerial(0,0,0)
WScript.Echo "Right    ->" & Now - TimeSerial(0,0,0) + TimeSerial(0,0,0)
WScript.Echo "Wrong    ->" & Now + TimeSerial(0,0,0) - TimeSerial(0,0,0)
WScript.Echo "Type right " & TypeName(Now + TimeSerial(0,0,0))
WScript.Echo "Type wrong " & TypeName(Now - TimeSerial(0,0,0))
 
Он достаточно понятен.
Нет, если делать явное приведение типов, через CDate(), то нормально. Но скажите почему, если последним оператором в выражении, в котором учавствуют только объекты типа Date, будет вычитание, то оно приведётся к другому типу ....
 
12月23日

Ну надо же, какая связь.

- Женщина в красной кофточке, а у Вас что болит?
...
- Голова? Ну это вы съели что нибудь. И что Вам прописали?
...
- Уколы? В голову?
...
- А куда?
...
- Ну надо же какая связь!
(с) Кто то из сатириков.
 
На домашней машине отключился Remote Desktop. Без ругани и логов. RDP client connect и сразу-же disconnect. Тихо. Молча. Чуток поковырялся и плюнул. Не очень нужно было.
Но тут на работе, точно с такими же симптомами, взбрыкнул Server 2003. А это уже наглость, т.к. из дома теперь не поработаешь (естественно СРАЗУ нашлись VIP клиенты которым в воскресенье нужно было настроить, а настройки на рабочем сервере. Еле вывернулся). Но server уже ругался. Правда,  единственным сообщением в System Event Log :
\SystemRoot\System32\RDPDD.dll failed to load
Ну хоть что-то. Поковырялся. Погуглил. Оказалаось, что это конфликт с драйверами видео карт от NVidia. О КАК!!!
И решается до безобразности просто :
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"SessionImageSize"=dword:00000020
и reboot, естественно, т.к. Terminal Server сильно "ядерный". Помогло и домашней XP и рабочему Server 2003.
 
Вот догадаться до такого - безперспективняк! Век живи - век учись.
 
12月17日

Письма наших писателей ...

"Здравствуйте!
Проблема заключается в очень медленной работе наших сайтов www._____.ru
и  www._____.ru.
.............
Просим разобраться в существующей проблеме.
В данный момент наш сист.администратор находится в отпуске, так что ждем
скорейшего и максимально полного ответа и помощи по этому эл.адесу: nobody@somehost.com "
 
Предлагаю раширить круг интересов :
"в данный момент наш webmaster бухает, так что ждём быстрейшего и красивенького web сайта по адресу: www.google.com"
"в данный момент наш бухгалтер сидит, так что ждём правильного и аккуратного финансового отчёта по адресу: г. Город, у. Уличная, д. 1, оффис 22"
"в данный момент наш Генеральный Директор на Сейшелах, так что ждём что вы нам подгоните "жирнейших" и "богатейших" заказчиков, с ОГРОМНЫМ откатом,  по телефону: 555-333-22"
12月16日

Про сертификаты и Win Server 2008

Как и обещал ранее, расскажу про сертификаты.
Задача :
Реализовать автоматическую постановку сертификата для сайта IIS. Тоесть совсем автоматическую.
Реализация:
--------------------
Server 2003 и IIS6, соответственно. Да проще простого :
 
set iiscertobj = CreateObject("IIS.CertObj")
iiscertobj.InstanceName = "w3svc/2059934190"
iiscertobj.ServerName = "localhost"
iiscertobj.Import "Loshadka.pfx" , "bubu" , False , True
Далее прикрутить binding и ВСЁ. Проще простого.
--------------------
Server 2008 (ну всё же beta он... хорошая, но beta) и IIS7 соответственно. Даже при установленной совместимости с IIS6 ответом на :
set iiscertobj = CreateObject("IIS.CertObj")
будет :
Microsoft VBScript runtime error: ActiveX component can't create object: 'IIS.CertObj'
Вот так. Ну должна же быть какая-то замена?
Ищем и ... Не находим :-(
Что предлагают нам взамен? А ничего. Пользуйтесь утилитами.
Отсупление - очень напоминает ситуацию с File Server Resource Manager из 2003-го R2. Ребята создали механизм, но скриптовую обвязку к нему не дали. Пользуйтесь утилями (http://technet.microsoft.com/en-us/cc730417.aspx -
Q: Is there a public scriptable API for FSRM?
A: FSRM has command line tools - dirquota.exe , filescrn.exe and storrept.exe which you can use for scripting. One more thing - the APIs themselves are not public - we plan to publish them in a future Windows release.
)
Ну утилями тоже можно (но не совсем гибко и удобно). Так камими утилями-то? Куда ни кинь - везде рассказывают "какой менюшкой надо пользоваться, что бы импортировать сертификат". Это "автоматизация"????? Ррррррррр!!!!!!!
НО! Мы хитрые и знаем, что есть certutil. ОТЛИЧНО! Для начала импортнём сертификат. Ну ка расскажи нам как? (для уменьшения простыни пропустим через find):
 
>certutil -? | find /I "pfx"
  -MergePFX         -- Merge PFX files
  -ConvertEPF       -- Convert PFX files to EPF file
 
О как ! Что-то не видно слова import ... Но есть более расширенная справка. Может чего скажет?
>certutil -v -? | find /I "pfx"
  -MergePFX         -- Merge PFX files
  -ConvertEPF       -- Convert PFX files to EPF file
    BackupDirectory -- directory to store backed up PFX file
  CertUtil [Options] -restoreKey BackupDirectory | PFXFile
    BackupDirectory -- directory containing PFX file to be restored
    PFXFile -- PFX file to be restored
            PFX file
  CertUtil [Options] -RecoverKey RecoveryBlobInFile [PFXOutFile [RecipientIndex]]
  CertUtil [Options] -MergePFX PFXInFileList PFXOutFile
  Merge PFX files
    PFXInFileList -- Comma separated PFX input file list
    PFXOutFile -- PFX output file
  CertUtil [Options] -ConvertEPF PFXInFileList EPFOutFile [cast | cast-] [V3CACertId][,Salt]
  Convert PFX files to EPF file
    PFXInFileList -- Comma separated PFX input file list
 
И тут ни слова про импорт. Что делать? На просторах MS сайта, в закоулках, находим - http://technet.microsoft.com/en-us/library/cc786245.aspx
который говорит - ЕСТЬ правильные ключи у certutil для импорта PFX сертификата. И правда :
>certutil -importpfx -?
Usage:
  CertUtil [Options] -importPFX PFXFile
  Import certificate and private key
    PFXFile -- PFX file to be imported
    Defaults to personal machine store.
Options:
  -f                -- Force overwrite
  -user             -- Use HKEY_CURRENT_USER keys or certificate store
  -gmt              -- Display times as GMT
  -seconds          -- Display times with seconds and milliseconds
  -v                -- Verbose operation
  -privatekey       --
  -p Password               -- Password
  -csp Provider             -- Provider
CertUtil -?              -- Display a verb list (command list)
CertUtil -importPFX -?   -- Display help text for the "importPFX" verb
CertUtil -v -?           -- Display all help text for all verbs
 
Зачем скрывать-то? Умеет ведь. Но не говорит, а надо выпытывать :-) Это ещё не вся правда. Оказывается у команды certutil -importpfx есть ещё ключи, которые она даже не говорит, но понимает. И написано это в одном "глухом месте" - http://blogs.technet.com/pki/archive/2007/07/29/marking-private-keys-as-non-exportable-with-certutil-importpfx.aspx
От так вот. Но это полдела. То что в IIS6 vs делали 4-мя строчками в скрипте, мы ещё не доделали. Т.е. сертификат импортировали, а к сайту его не привязали. Как? "Да легко!" говорят нам разработчики. Вот так, например. О скриптах даже речи не идёт. Программу писАть надоть. Да и certificate hash надо откуда-то взять. Тоже желательно "автоматически". Есть ещё программка. AppCmd, подумаете Вы? И ошибётесь. ApCmd (основная утилита для IIS7) не привязывает сертификаты к сайту. А кто? Не поверите! NETSH !!!! Убедитесь, набрав команду :
 
netsh -c "http" add sslcert ?
 
Т.е. Вместо удобного объекта для работы с сертификатами, мы получили связку из 3-х программ (которые ещё связать надо, что не особо тревиально):  certutil (c неописанными параметрами), appcmd (привязка https на сайт) и netsh (для привязки сертификата к IP адресу и порту).
 
С ПРОДОЛЖАЮЩИМСЯ, ВАС, БЕТАТЕСТИРОВАНИЕМ Windows Server 2008 !!!! :-))))))