Powered By Blogger

вторник, 30 ноября 2010 г.

AD: Отключение старых учетных записей

Возникла проблема, погуглив нашел отличную статью вот здесь
Также на всякий решил полностью ее скопипастить:

"

Проблема старых рабочих станций в AD


Как происходит типичный процесс обеспечения нового сотрудника рабочей станцией:
  1. Со склада достается рабочая станция
  2. На рабочую станцию устанавливается операционная система и все необходимое ПО
  3. Рабочая станция заводится в домен по неким именем, подозрительно похожим на фамилию пользователя
  4. Запись о рабочей станции в структуре AD перемещается в необходимый OU
  5. Рабочая станция устанавливается на рабочее место нового сотрудника
Какие типовые сценарии обычно выполняются при увольнения сотрудника:
  1. Рабочая станция уволенного сотрудника передается на склад, а содержимое жесткого диска ждет одна из следующих судеб
    • Все необходимые документы переносятся на общеизвестный общий сетевой ресурс, доступ к папке, содержащей перенесенные документы дается для сотрудника, который принимает дела
    • Все необходимые документы переносятся непосредственно на рабочую станцию сотрудника, принимающего дела увольняющегося коллеги
  2. Рабочая станция уволенного сотрудника не передается на склад, а вместо этого
    • Переименовывается в соответствии чем-то, подозрительно похожим на фамилию уже нового пользователя
    • Не переименовывается по причине халатного отношению к работе или по простой забывчивости
Таким образом, при солидном парке ПК и ненулевой текучести кадров, с течением времени в Active Directory накапливается масса записей о рабочих станциях, в точном статусе которых уже не уверен никто.
А выход на самом деле достаточно прост и изящен. Учетная запись рабочей станции с точки зрения каталога AD несильно отличается от учетной записи пользователя. То есть, в свойствах записи есть замечательное поле штампа времени последнего входа в домен. Более того, учетная запись компьютера для аутентификации в домене тоже использует пароль, который обязан автоматически меняться в соответствии с установленными политиками безопасности (по умолчанию, период равен 60 дням).
В базовом же комплекте средств администрирования AD уже есть замечательные консольные утилиты, как нельзя лучше подходящие для наших целей.
  • dsquery — выводит список объектов AD, соответствующих заданному критерию
  • dsmod — изменяет заданные атрибуты объекта
  • dsmove — перемещает объект в рамках AD
  • dsrm — удаляет текущий объект или полностью дерево дочерних объектов
  • dsadd и dsget нам сейчас не понадобятся
Предположим, мы администрируем домен libertine.su. Итак, выполнив в командной строке простую команду
dsquery computer «dc=libertine,dc=su» -stalepwd 61
мы получим список из рабочих станций домена, которые не обновляли свой пароль в течении последнего 61 дня. Точнее, сказать, список из первых 100 записей, подпадающих под данное условие.
Если же количество рабочих станций может превышать это значение, плюс мы хотим вывести список только для компьютеров из OU marketing, то нет ничего проще:
dsquery computer «ou=marketing,dc=libertine,dc=su» -stalepwd 61 -limit 0
Мы также можем вывести список из компьютеров, которые не заходили в домен в течении заданного числа недель. Да, именно недель и об этом необходимо помнить, во избежании непонимания происходящего ;) Как и о том, что увы, команда работает только, если домен находится в 2003 native режиме.
Итак, выясним, какие компьютеры из OU Sales не регистрировались в домене за последние 7 недель:
dsquery computer «ou=sales,dc=libertine,dc=su» -inactive 7 -limit 0
Ок, мы выяснили. А что же с этим делать дальше? Логика подсказывает, что можно просто удалить. В принципе, без проблем. Но можно их сначала сделать неактивными. Для этого мы используем соответствующие утилиты командной строки. А найденные компьютеры из dsquery передадим туда при помощи механизма туннелирования команд (символ трубы в командной строке).
Следующей командой мы выключим учетные записи найденных на предыдущем этапе компьютеров:
dsquery computer «ou=sales,dc=libertine,dc=su» -inactive 7 -limit 0 | dsmod computer -disabled yes
Что, у нас не получилось? Все правильно! Параметры в виде полных путей к найденным компьютерам, во вторую часть необходимо передавать по одной, а не сразу весь список.
Можно, конечно, написать глупый cmd файл, примерно такого содержания:
:gost
dsquery computer «ou=sales,dc=libertine,dc=su» -inactive 7 -limit 1 | dsmod computer -disabled yes
goto gost
Таким образом мы в бесконечном цикле последовательно изменим атрибут каждой из находимых рабочих станций.
Но это как-то бесконечно некрасиво. Поэтому мы лучше напишем в этом файле следующую конструкцию:
@echo off
for /F «delims=» %%a in ('dsquery computer «ou=sales,dc=libertine,dc=su» -inactive 7 -limit 0') do dsmod computer %%a -disabled yes
pause
Первая и третья строка на вкус. Лично мне такое поведение нравится больше.
Теперь предлагаю переместить все выключенные записи компьютеров домена в одну единую OU под именем disabled old computers. Создаем эту OU при помощи командной строки или оснастки Active Directory Users and Computers.
А теперь создаем еще один cmd файл:
@echo off
for /F «delims=» %%a in ('dsquery computer «dc=libertine,dc=su» -disabled -limit 0') do dsmove %%a -newparent «ou=disabled old computers,dc=libertine,dc=su»
pause
Попутно можно задуматься о том, сколь бесконечным будет выглядеть результат, если в указанной OU уже содержатся выключенные записи рабочих станций домена. Хотя, разумеется, настоящие индейцы могут попробовать создать специального пользователя, который имея полные права на модификацию и запись, не будет иметь прав на чтение одной конкретной OU в домене. И запускать в дальнейшем все скрипты от имени данного пользователя.
Да, поскольку я обещал упомянуть утилиту dsrm в контексте управления записями рабочих станций, я ее упоминаю: если создать следующий cmd файл:
@echo off
for /F «delims=» %%a in ('dsquery computer «dc=libertine,dc=su» -disabled -limit 0') do dsrm -subtree -exclude -nopromt -c %%a
pause
А затем его еще и запустить, то у нас будет отличный повод поменять работу. А если рабочих станций было много, а резервное копирование настроено халатно, то вполне возможно, что нам придется поменять еще и профессию.
"


Я чистил не батником, а сразу с консоли:

C:\admin> for /F "delims=" %a in ('dsquery computer "ou=workstations,dc=domain,dc=edu" -inactive 7 -limit 0') do dsmod computer %a -disabled yes

 C:\admin> for /F "delims=" %a in ('dsquery computer "ou=workstations,dc=domain,dc=edu" -disabled -limit 0') do dsmove
 %a -newparent "ou=OldWorkstations,dc=domain,dc=edu"

Отключал пользователей графическим способом =)

воскресенье, 24 октября 2010 г.

Ubuntu 10.04.01 Server nut&ntp + скрипт очистки дисков.

Довольно много было времени потрачено на попытки заставить работать ИБП Ippon 3000 на Ubuntu 9.10 Server. Ну ни в какую не хотел он там нормально запускаться и работать. Позже я узнал что на 10.04.01 это косячок поправлен, не задумываясь переустановил систему.

aptitude install nut

В lsusb ищем бесперебойник. Далее в  /lib/udev/rules.d/52-nut-usbips.rules добавляем что то типа
............................................................................................................................
# Ippon
ATTR{idVendor}=="06da", ATTR{idProduct}=="0003", MODE="664", GROUP="nut"

............................................................................................................................

Отключаем и снова подключаем кабель USB от ИБП. В /etc/nut/ups.conf пишем:
............................................................................................................................
[ippon]
        driver = blazer_usb
        port = auto
        desc = "Ippon 3000"

............................................................................................................................

invoke-rc.d nut restart - перезагрузка сервера nut.
upsc ippon - просмотреть вывод всех значений которые позволяет посмотреть Ippon.

/etc/nut/nut.conf
............................................................................................................................
MODE=netserver

............................................................................................................................

/etc/nut/upsd.conf
............................................................................................................................
LISTEN localhost 3493
LISTEN 0.0.0.0 3493

............................................................................................................................

/etc/nut/upsd.users
............................................................................................................................
[admin]
        password = password
        action = SET
        anstcmds = ALL
[upsmon]
        password = password
        upsmon = master

............................................................................................................................

/etc/nut/upsmon.conf 
............................................................................................................................
MONITOR ippon@localhost 1 upsmon password master
FINALDELAY - 5
# процент батареи, при котором происходит завершение работы системы.

............................................................................................................................

По хорошему все должно работать. Я с помощью утилиты knutclient со своей машины подключался по сети до сервера где установлен nut и уже в графическом отображении смотрел на сколько процентов заряжена батарея, какое напряжение на входе/выходе ИБП, на сколько процентов он загружен и какая температура внутри.  
Синхронизация времени происходит демоном ntp. Благо практически никаких настроек он не требует.

aptitude install ntp

В /etc/ntp.conf  прописываешь сервер который тебе нужен. Единственное что время он обновляет только после перезагрузки, что на моем сервере в теории вообще не должно происходить. Поэтому с помощью crontab раз в 12 часов происходит обновление времени:

ntpdate -s -b -u ntp.server
/etc/init.d/ntp restart

Автоматическое удаление файлов происходит 3 раза в неделю, из одной директории удаляются все файлы старше 14 дней (crontab -e от пользователя который имеет права на удаление файлов из этой директории):

find /mnt/share/ -type d -mtime +14|xargs rm -vrf|cat >> /mnt/log.txt

Вывод команды пишется в файл лога, на всякий...


Ubuntu 10.04.01 Desktop LVM Raid 0

В наличии имелось пару винтов seagate 80 Gb SATA. Ничего более умного в голову не пришло как построить из них райд 0 уровня (чередующийся), и держать на нем виртуальные диски от VirtualBox. Так как постоянно приходится держать включенной виртуальную машину Win7 для тестов и некоторого софта, аналогов которому нету в linux. Реализовать было решено с помощью LVM. Это оказалось сделать даже проще чем я думал:

pvcreate /dev/sda
pvcreate /dev/sdb
vgcreate vg80r /dev/sda /dev/sdb
vgscan
vgchange -a y
lvcreate -i2 -I64 -L70G -n80raid vg80r

В принципе все. Теперь райд болтается в /dev по именем /dev/vg80r/80raid
Далее что бы отформатить его в XFS пришлось сделать вот так:

aptitude install xfsprogs
mkfs.xfs /dev/vg80r/80raid

В fstab прописал:
/dev/vg80r/80raid       /mnt/80raid     xfs     noatime,nodiratime,logbufs=8,logbsize=256k,osyncisdsync 0       0

Все это делалось с целью получить фантастическую производительность дисковой подсистемы (скорость чтения записи в теории должна увеличится вдвое). К сожалению ничего подобного не произошло. При банальном копировании файлов (как большого так и меньшего размера) на райд по скорости он проигрывает обычному винту seagate 320 Gb SATA. Тоже самое происходит и при копировании с него. Одиночный винт справляется куда быстрее. На скорость работы виртуальных машин это вообще никак не сказалось. Так теперь райд и стоит, экспериментировать с ним нету времени, да и разбирать лень.
Вот и hdparm дал какие-то странные результаты.
sda - seagate 80 Gb  - один из дисков райда
sdb - seagate 80 Gb - второй диск райда
sdc - seagate 1000 Gb - терабайтник для хранения фильмов
sdd - seagate 320 Gb - системный винт
sde - 250 Gb Trancend переносной USB винчестер
80raid - райд 0-го уровня из 2-х 80 Gb seagate'ов

hdparm -tT /dev/...

                                                  sda        sdb       80raid        sdc        sdd        sde
Cached reads (MB/sec):              1684      1392      1692         1664        1690      1654
Buffered disk reads (MB/sec):      56.9       56.8      112.7        117.2       73.7       27.22

Впринципе логично, что каждый из 80 Гб винтов работает со скоростью по 56 Мб/с, а вместе уже дают 112 Мб/с. Но не понятно почему одиночный 320 Гб винт выдает аж 117 Мб/с, хотя он и системный, а вот терабайтник дает только 73 Мб/с. Будет время надо разобраться с hdparm да и вообще посмотреть как под Ubuntu можно еще затестить скорость работы винтов.

суббота, 9 октября 2010 г.

Ubuntu 10.04.01 Desktop

Наконец то определился с адудиоплеером =) Audacious - всем удобен, немаловажно конечно что он почти полная копия Winamp'a. Да еще и суперский эффект Crystalizer - больше ничего для счастья и не надо.


EasyTag - удобная программка для редактирования тегов и переименования айдиофайлов. Я б даже сказал просто незаменимая. Picasa для просмотра и небольшого редактирования изображений. Ну и Chromium как веб-бродилка. Firefox достал падать от малейшей нагрузки. Конечно жалко было расставаться с такими удобными плюшками как XMarks AdBlock и FlashBlock, но и по 10 эпикфейлов за час тоже терпеть нету сил...

SharePoint Services 3.0 sp 2 backup

Резервное копирование узла SharePoint Services 3.0
technet - Также где то было написано что таким способом нельзя архивировать базы большого размера, ну у меня база маленькая, не страшно.
Сам он поднят на w2k8sp2st. Запланировано все делать в автоматическом режиме, раз в неделю, с помощью батника. Батники лучше писать в FAR'e, т.к. в его встроенном редакторе есть переключатель кодировок с ANSI на OEM и обратно по F8 =). Если батник писать в обычном NotePad'e то вместо русских символов будут крякозябры. Писать следовательно надо в кодировке OEM.
Порядок действий такой:
1. Создается бэкап-файл узла шарепойнт (пишется лог выполнения)
2. Архивируется раром (архивируемая база удаляется)
3. Перемещается на сервер резервных копий.
Запускается он от локального Администратора, по другому не хотел. А мб просто свою учетку нужно было добавить в локальные админы, хотя у меня и так права Администратор домена и всего остального.
Сам батник:


cd %PROGRAMFILES%\common files\microsoft shared\web server extensions\12\bin
stsadm -o backup -url http://localhost -showtree > c:/backup/log_%date%.txt
stsadm -o backup -url http://localhost -filename backup_%date%.bak -directory c:\backup -overwrite -force -backupthreads 3 -backupmethod full >> c:/backup/log_%date%.txt
cd c:\Program Files\WinRAR
rar.exe a -r -rr5p -m5 -df -y c:\backup_%date%.rar c:\backup\
move /Y c:/backup_%date%.rar \\backupserver\share

move - пришлось делать отдельным батником от другого пользователя, который имеет доступ на сервер копий.
Описание всех опций stsadm на сайте Microsoft. Единственно что про nositelock опцию у меня не принял, сказал что нет такой, пришлось удалить, странно... Про опции консольного рара написано в rar.txt в папке куда он и установлен.
Теперь остается пару раз проверить насколько надежно это все работает, и в случае успеха, забыть =)

среда, 6 октября 2010 г.

Бухгалтерия

Запомнить навсегда, что не стоит устанавливать на виртуальную машину КД бухгалтерии, навешивать на него базу 1С и туда же устанавливать софтину удаленной отчетности (аля дипост такском референт). Даже если база небольшая, и пользователей совсем не много.
Полезные софтины:
1. nnCron - выполняет действия по расписанию (самый минимум это удаляет старые файлы в определенное время).  Но не работе через RDP. То есть не запускается или выдает кучу ошибок. Поэтому юзать только локально, ну или использовать VNC или Radmin.
2. WinImage - поможет сделать образ например флоппи диска (что бы потом его можно было использовать в виртуальной машине). Но делает образ с расширением .fdp (как то так), после замены на .flp работает нормально.

вторник, 28 сентября 2010 г.

BGInfo 4.16 - IP-адрес и hostname на рабочем столе

Полезная утила, выводит инфу на рабочий стол пользователей, поверх обоев. Причем создает копию обоев которые установлены у юзера, и на копии уже рисует инфу. IP-адрес и hostname - минимум сведений которые пользователь должен знать, что бы ему можно было помочь. 
Запускается bginfo, настраивается отображение, сохраняются настройки в конфигурационный файл config.bgi. Все это дело выкладывается на шару доступную для чтения всем, например \\server\bgi\
Дальше рисуется батник примерно следующего содержания:


\\server\bgi\bginfo.exe \\server\bgi\config.bgi /timer:0 /nolicprompt /silent


И прикручивается пользователям выполняться при старте. Как вариант можно и раскидать ярлычки на запуск батника по рабочим столам, чтобы не портить обои, тогда использовать опцию - /popup - выводит инфу в окошке. Также можно добавить телефон тех.поддержки в выводимую инфу. Правда его и так все знают наизусть.

понедельник, 27 сентября 2010 г.

Батник сбора инфы о железе + тихая установка TightVNC (WinXP + AD Win2k3r2)

Благодаря лени сделал сегодня .bat файл, основная функция которого была сбор инфы о железе, на котором он запускается. Плюс он также устанавливал TightVNC, при этом не спрашивая ничего.
Минус конечно в том что все равно пришлось пройтись по всем машинам, и залогиниться в систему. Это лучше чем ходить и устанавливать вручную TightVNC и создавать отчеты в Everest на каждой машине (а их 50+), но в идеале же хотелось вообще никуда не ходить, а просто запустить батник, указать ему путь к текстовому файлу со списком IP-адресов и пойти пить пиво... Уверен что такое возможно, но именно сегодня времени как раз таки было мало. М.б. в будущем сделаю =)
Батник прикручивается к учетной записи, и выполняется при входе, после завершения всех операций осуществляется выход из системы. Сбор информации происходит с помощью Everest'a Corp. Portable, расположенного на сетевом диске, доступном на чтение для используемой учетной записи. Everest Corp потому что отчеты нужны в .ini файлах, для дальнейшего запихивания их в замечательную программу БКО (База Компьютеров Организации), и только Corp из всей линейки Everest'ов умеет делать именно их. Еще используемая учетная запись была в группе "Администраторы домена", опять же наверняка через групповые политики можно было добавить прав и обычной учетной записи для установки программ, но времени было мало копаться.
Установив на виртуальную машину WinXP TightVNC-сервер, настроил его, прописал разрешенные адреса, с коротых доступны конекты, пароль на подключение, пароль к настройкам, и дополнительные параметры. Затем экспортировал из реестра ветку с настройками HKLM в файл hklm.reg. Сам батник:

@echo off
\\server\share\everest.exe /R $IPADDR_HOSTNAME /SUM /INI /SAFE
mkdir c:\temp
cp \\server\share\tightvnc.install.exe c:\temp
c:\temp\tightvnc.install.exe /S
regedit -s \\server\share\hklm.reg
rmdir c:\temp /S /Q
shutdown /l /t 5

HKLM.REG - экспортируется из HKLM\software\tightvnc\server\
Коряво, но зато работает =) Если будет время, подумаю как реализовать идеальный вариант.
Еще полезно бывает на корпус каждого компьютера наклеивать его имя в домене, становиться намного легче ориентироваться, если забираешь системник на ремонт. Записать список всех компьютеров вбитых в домен в файл:

dsquery computer -o rdn -limit 0 > file.txt 


Конечно выполнять на контроллере домена =)