µTorrent и уравление через web

Сегодня запускал в организации в эксплуатацию новый безлимитный интернет канал. Так как в будни у нас практически нельзя ни чего делать важного, пришлось приехать в субботу. В итоге решил раз так пошло, сменить для всего вуза шлюз на новый. Он уже два месяца находится в тестовой эксплуатации. Его работа показала, что все отлично, и я принял решение, что сегодня заменю старый шлюз на новый находящийся в тестовой эксплуатации. В итоге, после всего сделанного, появился 8 Mbit безлимитный интернет канал. Читать далее…

Author: Categories: Заметки Tags:

Парашют APC UPS для FreeBSD

Дошли таки у меня руки настроить парашют для своего шлюза настроенного на FreeBSD 7.1-RELEASE-p5. Мы в организации для серверов закупаем источники бесперебойного питания компании American Power Conversion. В основном у нас используются APC Smart-UPS 2200VA Rack Mount 2U USB. Так как у меня ядро уже было собрано с поддержкой USB, то просто проверим, что система увидела UPS подключенную через USB кабель. Читать далее…

Author: Categories: Работа Tags:

Импорт DHCP списка.

Вот таким коротким кодом в одну строку сделал импорт всей резервации.

ForEach ($address in Get-Content dhcp-export.txt) { $tmp = $address.split("`t"); if ($tmp[0] -notmatch "^10\.1\.2\.") {`
netsh dhcp server \\10.1.1.39 scope 10.1.0.0 add reservedip $tmp[0] $tmp[4] $tmp[1]| Out-Null }}

Тут конечно нету ни чего героического. Разместил так, для себя чтоб не забыть.

MCP клуб.

30 Апрель 2009

Сегодня я стал участком MCP клуба Microsoft в городе Иркутск. MCP это аббревиатура от Microsoft Certified Professional (рус. Сертифицированный профессионал Microsoft). Я правда пока не являюсь таковым, но стремлюсь к этому. Грубо говоря это клуб по интересам, где делаются доклады по продуктам компании Microsoft. При чем докладчики не всегда являются сотрудниками MSFT. Здесь на оборот поощряется если докладчиком выступает член клуба. После доклада можно задавать вопросы докладчику, развивать дискуссии на интересующие темы среди коллег ножа и топора, тем самым повышая свой профессиональный уровень и уровень коллег. Для меня это было первым посещением этого клуба, а для клуба, это уже второй сбор. За это отдельное спасибо товарищу Дмитрию Воцке за создание данного клуба на технической базе компании ООО «Топ эксперт». Пока у меня только положительные эмоции от данного мероприятия. Жду последнего четверга месяца мая для посещения следующего MCP клуба.
Основатель данного движения Алексей Майоров подарил участникам клуба вот такой баннер чтобы была возможность показать свое причастие к движению.

Author: Categories: Саморазвитие Tags:

Мой первый сертификат

30 Апрель 2009

Сегодня я получил свой первый сертификат в жизни удостоверяющий мои знания в сфере IT технологий. Получил я его проходя онлайн сертификацию на сайте RetraTech. Правда сразу хочу покается, сдал я его не с первого раза. Тест содержал некоторые вопросы с задачами, реализацию которых мне делать не приходилось. Будь то: «Как подмонтировать первую сессию на cd диске» и т.д. Так же балл сдачи то же не высок, конечно хотелось большего. А вообще опыт только положительный. Есть к чему стремиться так сказать.
Вот он мой первый сертификат:
«Системное администрирование FreeBSD»


Так же ради интереса сдал на «Пользователь ПК».


Тут я получил достаточно хорошую оценку, хотя конечно хотелось на оборот. Я думал, что больше знаю о работе FreeBSD. Так что буду углублять свои знания! :)
Если у кого есть желание поздравить, то принимаю поздравления в комментарии!

Author: Categories: Саморазвитие Tags:

Ищем уволенных сотрудников в Active Directory через SQL базу

29 Апрель 2009

У меня в организации есть база данных в которой отображается вся миграция сотрудников внутри вуза. Из этой базы мы когда заводим сотруднику учетную запись в Active Directory в поле WebPage заносим ID пользователя. Так, что вот, родился скрипт чтоб вычистить всех уволенных пользователей. Пока он просто на консоль выводит информацию, чтоб инженер мог вручную все просмотреть и принять решение, но его легко можно модифицировать чтоб он сам блокировал/удалял учетную запись пользователя.

param ([switch]$show, [switch]$disable, [switch]$csv)
#########################################################################################
#   Created:      Zakharchenko Andrey Ruslanovich
#   Date:         2009.04.29
#   Description:  Поиск уволенных пользователей в Active Directory через запрос в
#                 к MS SQL серверу
#   Dependencies: Quest.ActiveRoles.ADManagement
#########################################################################################
$SQLServer = "SQLSERVER"
$DBName = "DB_SOTRUDNIC"
$i = 0
$text = "`n
`t Надо использовать следующий синтаксис скрипта:
`t -show        - Выводит информацию на консоль
`t -disable     - Отключает всех уволенных сотрудников
`t -csv         - Выводит информацию в формате для csv
`t------------------------------------------------------------------------------------
`t Пример:
`t ./search-delete-user-from-ad.ps1 -show "


if (!($show) -and !($disable) -and !($csv)) {write-warning $text; return}

$SQLConnection = new-object System.Data.SqlClient.SqlConnection("Initial Catalog=$DBName;Data Source=$SQLServer; `
                                Integrated Security=SSPI"
)
$SQLConnection.Open()
ForEach ($user in Get-QADUser -searchroot "OU=БГУЭП,DC=isea,DC=ru" -IncludedProperties WebPage,LastLogon,ParentContainer, `
                                whenchanged,LogonName,AccountIsDisabled -SizeLimit 0 ) {
    if ($user.webpage){
        if (!($user.webpage -match "^Q")) {
            $query = "SELECT TOP (1) регном FROM dbo.Customer WHERE регном = " + $user.WebPage + ""
            $SQLCommand = New-Object System.Data.SqlClient.SqlCommand($query, $SQLConnection)
            $SQLReader = $SQLCommand.ExecuteScalar()
            if (!$SQLReader) {
                if ($show) {
                    Write-Output "Name: $($user.DisplayName)"              
                    Write-Output "LogonName: $($user.LogonName)"           
                    Write-Output "WebPage: $($user.WebPage)"
                    Write-Output "AccountIsDisabled: $($user.AccountIsDisabled)"               
                    Write-Output "ParentContainer: $($user.ParentContainer)"
                    Write-Output "Whenchanged: $($user.whenchanged)"
                    Write-Output "LastLogon: $($user.LastLogon)"
                    Write-Output "-----------------------------------------------------------------------"
                }
                if ($disable) {
                    If ($user.AccountIsDisabled -eq $false) {
                        ($user).AccountIsDisabled = $true
                        ($user).CommitChanges()
                        Write-Output "Name: $($user.DisplayName) - Отключен"
                        Write-Output "AccountIsDisabled: $($user.AccountIsDisabled)"
                    }
                }
                if ($csv) {
                    $tmp = "" |Select-Object @{name='Name';expression={$($user.DisplayName)}},@{name='LogonName';expression={$($user.LogonName)}}, `
                    @{name='WebPage';expression={$($user.WebPage)}},@{name='AccountIsDisabled';expression={$($user.AccountIsDisabled)}}, `
                    @{name='ParentContainer';expression={$($user.ParentContainer)}},@{name='Whenchanged';expression={$($user.whenchanged)}}, `
                    @{name='LastLogon';expression={$($user.LastLogon)}}
                    Write-Output $tmp
                }
                $i++
            }
        }
    }
}

Write-Output "Итого пользователей: $($i)"
# Out-file -filepath "Пользователи к удалению.txt" -Encoding "Unicode"
$SQLConnection.Close()

mpd5 и настройка экспорта netflow

27 Апрель 2009

Несколько дней назад я написал заметку по установке mpd5 + freeradius2 + mysql. Сегодня я хочу рассказать о настройке экспорта детализированной статистики из mpd5 по средством netflow протокола. Раньше для этого дела надо было самостоятельно через утилиту ngctl самостоятельно создавать сенсоры и управлять ими через [up|down]-script скрипты. Сейчас же это можно сделать средствами самого mpd5. Для этого необходимо внести небольшие изменения в конфигурационный файл mpd5 и воспользоваться набором программ из пакета flow-tools для сброса/просмотра/импорта статистики. Читать далее…

Author: Categories: Заметки, Работа Tags: , ,

mpd5 + freeradius2 + mysql

24 Апрель 2009

Когда-то в далеком 2007 году я разместил статью, о настройки связки mpd + freeradius + mysql на сайте комрада lissyara. Время шло, все работало отлично, выполняло весь необходимый мне функционал. Недавно потребовалось перенести эту связку на новый более мощный сервер. Решено было использовать последние версии используемых продуктов. mpd5 и freeradius2. Данные программные продукты очень изменили свой функционал и конфигурационные файлы, из-за этого я решил сделать набросок статьи. О том как это все дело заставить работать вмести :) .
Сразу хочу оговорить, я не буду писать о том, что надо открыть этот конфигурационный файл, найти какую-то строчку и поменять на другое значение. Мне это не надо, мне просто необходима заметка, что надо сделать, чтоб не забыть :) По этому я просто приведу diff разницу между исходным конфигурационным файлом и целевым. Читать далее…

Author: Categories: Работа Tags: , ,

Virtualization WMI Provider

21 Апрель 2009

Сегодня я хочу попытаться объяснить как используя PowerShell, можно управлять ролью виртуализации Hyper-v. Пока я для себя вижу такую возможность только через WMI провайдер под названием Virtualization WMI Provider. Знакомство начнем с класса Msvm_ComputerSystem он нам позволит узнать информацию о хост машине и о ВМ созданных на этом сервере. Читать далее…

Автоматизация процесса заведения веб узлов на сервере IIS 7.0

20 Апрель 2009

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

param ($domain, $password, $ipaddress)

#########################################################################################
#   Created:      Zakharchenko Andrey Ruslanovich
#   Date:         2009.04.20
#   Description: Добавление web узла на сервер IIS 7.0.
#                       Создание необходимых пользователей/групп/DNS записей
#             Установка пирмишенов на домашнюю папку сайта
#             Добавление ссылок для DFS
#########################################################################################
$text = "`n
`t Надо использовать следующий синтаксис скрипта:
`t -domain      - Название домена. Пример: domain.isea.ru
`t -password    - Предпологаемый пароль пользователя
`t -ipaddress   - ip адес сервера IIS 7.0
`t------------------------------------------------------------------------------------
`t Пример:
`t ./add-web-iis-site.ps1 -domain "
"domain.isea.ru"" -password ""uRusae8kie"" -ipaddress ""10.1.1.92"" "

if ((!$domain) -or (!$password) -or (!$ipaddress)) { Write-Warning $text; return; }

#--- объявление переменных
$user = "iis-$domain"
$userou = "OU=IIS Servers,OU=Domain Servers,OU=БГУЭП,DC=isea,DC=ru"
$groupou = "OU=Sites,OU=Groups,OU=БГУЭП,DC=isea,DC=ru"
$resourcegroupou = "OU=Sites,OU=Resources,OU=БГУЭП,DC=isea,DC=ru"
$diskmapgroupou = "CN=Sites Disk map (res),OU=Sites,OU=Resources,OU=БГУЭП,DC=isea,DC=ru"
$gp = "Site $domain"
$gpres = "Site $domain (res)"
$dir = "D:\Sites"
$dirhome = join-path $dir $domain
$dnsserver = "dc-02.isea.ru"
$zone = "isea.ru"
$class = 1
$ttl = 3600
$site = "www.$domain"

Write-Host "Загрузка оснастки IIS 7.0. Это может занять некоторое время"
Add-PSSnapin WebAdministration

Write-Host "Загрузка оснастки Active Directory. Это может занять некоторое время"
Add-PSSnapin Quest.ActiveRoles.ADManagement

Write-Host "Подключение к контроллеру домена DC-02. Это может занять некоторое время"
connect-QADService -service 'DC-02.isea.ru' | out-null

#--- создаем пользователя
if ($user.Length -ge 20 ) { $usertmp = $user.Substring(0,20) }
else { $usertmp = $user }
$create = New-QADUser -name $user -ParentContainer $userou -SamAccountName $usertmp  -UserPassword $password -FirstName $user -DisplayName $user -UserPrincipalName "$user@isea.ru"

#--- устанавливаем параметры пользователя
Set-QADUser $create.DN -PasswordNeverExpires $true -ObjectAttributes @{userWorkstations='IIS-02'} | out-null

#--- содаем группу
$gpcreate = New-QADGroup -ParentContainer $groupou -Name $gp -SamAccountName $gp

#--- ресурсную группу
$gprescreate = New-QADGroup -ParentContainer $resourcegroupou -Name $gpres -SamAccountName $gpres  -GroupScope 'DomainLocal'

#--- делаем добавления групп
Add-QADGroupMember -Identity $gprescreate.DN -Member $gpcreate.DN | out-null
Add-QADGroupMember -Identity $diskmapgroupou -Member $gprescreate.DN | out-null

#--- содаем целевую папку и настраиваем пермишины
New-Item $dirhome -type dir | out-null
$acl  = Get-Acl $dirhome
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagationn = [system.security.accesscontrol.PropagationFlags]"None"
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule ("isea\$gpres", "Modify",$inherit, $propagationn, "Allow")
$acl.AddAccessRule($AccessRule)
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule ("$user@isea.ru", "ReadAndExecute" ,$inherit, $propagationn, "Allow")
$acl.AddAccessRule($AccessRule)
$acl | Set-Acl $dirhome

#— Отключение от контроллера домена DC-02
Disconnect-QADService

#--- заводим записи в DNS
$wmi = [wmiclass]"\\$dnsserver\root\MicrosoftDNS:MicrosoftDNS_AType"
$wmi.CreateInstanceFromPropertyData($dnsserver, $zone, $site, $class, $ttl, $ipaddress) | out-null

$wmi = [wmiclass]"\\$dnsserver\root\MicrosoftDNS:MicrosoftDNS_CNAMEType"
$wmi.CreateInstanceFromPropertyData($dnsserver, $zone, $domain, $class, $ttl, $site) | out-null

#--- содаем web узел
New-Item iis:\Sites\$domain -bindings @{protocol="http";bindingInformation=$ipaddress+":80:$domain"} -physicalPath $dirhome | out-null
Set-ItemProperty -Path "IIS:\Sites\$domain"  -name username -value "ISEA\$usertmp" | out-null
Set-ItemProperty -Path "IIS:\Sites\$domain"  -name password -value $password | out-null

#--- сосздаем линк для DFS и назначаем права
dfsutil Link Add "\\isea.ru\Sites$\$domain" "\\IIS-01\Site$\$domain" | out-null
dfsutil property  acl reset "\\isea.ru\Sites$\$domain" | out-null
dfsutil property  acl grant "\\isea.ru\Sites`$\$domain" 'isea\Sites (res):R' protect | out-null
$tmp = "`"isea\"+$gpreS+'"'+ ':R'
dfsutil property  acl grant "\\isea.ru\Sites`$\$domain"  $tmp | out-null

ToDo
В дальнейшем хочется данный скрипт добавить:
1. возможностью проверки на существование пользователя/группы/веб узла/записей в DNS
2. избавится от страшной и ненужной переменной $tmp
3. найти способ настройки «анонимной проверки подлинности», а то пока вручную приходится прописывать
4. добавить генерацию пароля
—————————————
Предложения и замечания принимаются.

P.S. для для написания скрипта использовались PowerShell Snap-in for IIS 7.0 (x86) для упрвления IIS и PowerShell Commands for Active Directory для работы с AD