Архив Декабрь, 2008

VBScript — наше всё!!

Posted in Работа (SysAdmin-ство) on 24.12.2008 by kgbboss
Мдяяя …
Странная штука получается. Попробуйте выполнить вот такой 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, будет вычитание, то оно приведётся к другому типу ….
 

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

Posted in Работа (SysAdmin-ство) on 23.12.2008 by kgbboss
— Женщина в красной кофточке, а у Вас что болит?
— Голова? Ну это вы съели что нибудь. И что Вам прописали?
— Уколы? В голову?
— А куда?
— Ну надо же какая связь!
(с) Кто то из сатириков.
 
На домашней машине отключился 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.
 
Вот догадаться до такого — безперспективняк! Век живи — век учись.
 

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

Posted in Работа (SysAdmin-ство) on 17.12.2008 by kgbboss
"Здравствуйте!
Проблема заключается в очень медленной работе наших сайтов www._____.ru
и  www._____.ru.
………….
Просим разобраться в существующей проблеме.
В данный момент наш сист.администратор находится в отпуске, так что ждем
скорейшего и максимально полного ответа и помощи по этому эл.адесу: nobody@somehost.com "
 
Предлагаю раширить круг интересов :
"в данный момент наш webmaster бухает, так что ждём быстрейшего и красивенького web сайта по адресу: http://www.google.com"
"в данный момент наш бухгалтер сидит, так что ждём правильного и аккуратного финансового отчёта по адресу: г. Город, у. Уличная, д. 1, оффис 22"
"в данный момент наш Генеральный Директор на Сейшелах, так что ждём что вы нам подгоните "жирнейших" и "богатейших" заказчиков, с ОГРОМНЫМ откатом,  по телефону: 555-333-22"

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

Posted in Работа (SysAdmin-ство) on 16.12.2008 by kgbboss
Как и обещал ранее, расскажу про сертификаты.
Задача :
Реализовать автоматическую постановку сертификата для сайта 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 !!!! :-))))))
 

CMD наше ВСЁ.

Posted in Работа (SysAdmin-ство) on 12.12.2008 by kgbboss
Нарвались ребята на забавную шутку. Пишут они CMD файл и, как приличные люди, его коментируют. CMD файл предназначен для установки "заплаток" на Windows Server. В качестве коментария были использованы ссылки на KB Microsoft вида — http://go.microsoft.com/fwlink/?LinkID=82148
 
И каково было удивление, что в данном CMD файле обнаружились ошибки. О КАК! И ГДЕ???!!! В коментариях. 🙂
Оказалось всё просто. Строка вида :
выдаёт ошибку :
82148 was unexpected at this time.
 
О КАК !!!!
Оказалось, что CMD воспринимает /? как единственный (и первый, что важно) возможный параметр для команды rem.
При чём "/?" должен появится до первого пробела. Вот это:
уже не работает (т.е. не воспринимается как ошибка).
 
 

Разный PING и все, все, все …

Posted in Работа (SysAdmin-ство) on 03.12.2008 by kgbboss
И так. До того как я начал работать в нынешней компании я очень любил программистов. Ну, во всяком случае, хорошо к ним относился, т.к. и сам являюсь профессиональным программистом (специальность 1735, ели кому-то что-то говорит). (Кстати, искал справочник по профессиям — не нашёл 😦 ). Ну так вот, к чему я? Ааааа … "Люблю" программистов. Особенно ИДИОТОВ.
 
История: У нас редко (но метко) на одной из серверных платформ происходит "залипание" интерфейса. Т.е. он всё "слышит", но ничего не отвечает. Помогает "удар" по интерфейсу (disable-enable). Часто это происходит на этапе старта системы.  Вручную делать — забодаешься бегать. Пишем startup скрипт, который определяет, что интерфейс залип и "бьёт" по нему. Как определить, что интерфейс "залип"? Самый простой способ — ping <default gateway>.
Пишем скрипт :
 
@echo off
setlocal ENABLEDELAYEDEXPANSION
:begin
set IFName=Local Area Connection
 
Set DG=No
 
for /F "tokens=1,2,* delims=:. " %%a in ( ‘netsh -c "interface ip" show address "%IFName%"’ ) do if "%%a %%b" == "Default Gateway" Set DG=%%c
 
if "%DG%" == "No" (
   echo Default Gateway for interface "%IFName%" not found
   exit /b
)
 
ping %DG%
 
if ERRORLEVEL 1 (
   netsh -c "interface" set interface "%IFName%" DISABLED
   netsh -c "interface" set interface "%IFName%" ENABLED
   goto :begin
)
 
Всё хорошо.  Включаем это дело в startup машин и спокойно уходим спать. НО! Нас будят, потому как на Windows Beta 2008 Server (c таким количеством разных глюков 2008-й может быть только beta) "залип" интерфейс. Что за напасть? А "напасть" в головах программистов.
Примеры ping-а :
Windows Server 2003 —
 
> ping 10.10.10.1
Pinging 10.10.10.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 10.10.10.1:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Всё хорошо. Действительно DG недоступен, т.к. Lost = 100% и errorlevel явно не 0.
 
Windows BETA Server 2008 —
 
 > ping 10.10.10.1
Pinging 10.10.10.1 with 32 bytes of data:
Reply from 10.10.10.35: Destination host unreachable.
Reply from 10.10.10.35: Destination host unreachable.
Reply from 10.10.10.35: Destination host unreachable.
Reply from 10.10.10.35: Destination host unreachable.
Ping statistics for 10.10.10.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Чувствуете подвох? Lost = 0% !!!!!! ВСЁ ХОРОШО!!! Errorlevel = 0 и интерфейс как был "залипшим", так и остался.
Вот такие "чудеса".
"Программисты обладают альтернативным сознанием" (С) Мой
 
P.S. Всё это я написал к тому, что играюсь сейчас с сертификатами IIS7, а там ещё более альтернативное сознание :-))) Об этом в следующей статье.