🏠: работа

Что сделал на этой неделе

Пишу, чтобы не забыть, что делал, потом может пригодиться.

Скрипт, меняющий пароли локального администратора на рабочих станциях

Вещи типа Local Administrator Password Solution использовать в наших широтах не очень принято, поэтому приходится изобретать свой велосипед. Работа идёт через ADSI, так как Powershell v5, где есть удобные команды типа Get-LocalUser, установлен далеко не везде (почему — это отдельная тема, слабо связанная с технической стороной).

Скрипт берёт имена рабочих станций из AD, потом для каждой проверяет соединение. Если связь есть, лезет туда и получает список членов группы локальных администраторов. Если у учётки «Администратор» пароль старше 60 дней (он в секундах, надо его делить на 86400), генерит новый и задаёт его, затем снимает флаги «пароль не требуется», «пароль не может быть изменён», и «учётная запись отключена», ставит флаг «срок действия пароля неограничен» — ведь неизвестно, когда в следующий раз удастся поменять пароль. Если среди членов группы администраторов обнаружились пользователи с определёнными названиями (техподдержка при заливке машин давала такие имена) — удаляет эти учётные записи.

Результаты пишутся в файл CSV — имя компьютера, имя локального администратора, пароль, дата последней успешной смены пароля, дата последней попытки смены пароля. Отчёт о работе скрипта высылается на почту.

Логон-скрипт, собирающий статистику о локально подключенных почтовых архивах в формате .pst

При входе пользователя в систему идёт подключение к COM-объекту Outlook.Application и выгружается список локальных объектов хранения, где встречается «.pst», также вычисляется размер этих файлов.

Результат пишется в общий каталог на сервере в формате CSV — версия Outlook, пути к файлам .pst, размеры в мегабайтах, пользователь, компьютер. Имя файла CSV также состоит из имён и пользователя, и компьютера, т. к. пользователь может заходить на несколько машин и везде иметь подключенные архивы.

Потом этот сценарий наверняка будет дорабатываться, так как изначальная идея заключается в том, чтобы хранить пользовательские архивы на сервере в их личных папках и делать оттуда резервные копии. Архивы эти можно отключить из Outlook скриптом прямо наживую, переместить их на сервер, а потом снова подключить. Это сэкономит много человеко-часов команде техподдержки — впрочем, как и любая автоматизация подобного рода.

Автоматизация создания файловой структуры, генерации групп и раздачи прав

На протяжении многих лет существования компании и смены разных команд айтишников, права на общие каталоги раздавались непонятно как и бессистемно, что закономерно привело к хаосу. Необходимо было сделать нормальную файловую структуру и раздать соответствующие права. Так как подразделений очень много, для каждого нужно создавать три ресурсные группы (листинг, чтение, запись), да ещё и с довольно сложной вложенностью (см. рис. 1), мысль о том, что всё это надо делать руками, приводила в уныние. К счастью, несколько дней размышлений и экспериментов прояснили метод решения задачи.


Рис. 1. Вложенность ресурсных групп для раздачи прав на каталоги

Сутью метода являются три вложенных друг в друга цикла, которые перебирают названия каталогов на всё большей глубине (само создание каталогов автоматизировать не удалось, т. к. единого подхода к сокращению названий подразделений нет, хотя я предлагал различные методы).

На первом этапе создаются ресурсные группы в AD (индекс вложенности в имени группы вычисляется интересно (сам быстро не додумался, пришлось гуглить) — путь к папке, например, \\server\share\department1\group2, разбивается на массив символов, где подсчитываются наклонные черты минус 2).

$level = (($_.FullName).ToCharArray() |? {$_ -eq "\"} |measure).count - 2

Второй этап — вложенность групп. Тот же тройной цикл, но теперь ищутся группы в AD, соответствующие названию текущей папки (например, FS-2-$($_.name)-). Далее делаются команды добавления членства в группах с выборками соответствующих имён согласно вышеприведённой схеме. Важно, что нужно задавать условие существования для добавления групп (if ($2groups -and $3groups)), потому что не везде существуют группы 4-го или 3-го уровней; также, нужно обнулять содержимое переменных групп 3 и 4 уровней после окончания их цикла, потому что иначе, когда снова начнётся главный цикл, не сработают условия существования групп (переменные уже будут содержать данные из предыдущего цикла), и в результате, группы нижних уровней из прошлой итерации добавятся в группы из новой, что совершенно не нужно.

Третий этап — раздача прав на папки. Здесь было уже проще — из-за такой сложной вложенности групп права на папку даются только для тех групп, которые соответствуют её названию, а также группе локальных администраторов сервера и учётной записи «Система». В Powershell изначально нет нормального функционала работы с правами NTFS, но зато есть прекрасный модуль NTFSSecurity. Вот права, например, для 3-го этапа:

Set-NTFSInheritance -Path "$($_.FullName)" -AccessInheritanceEnabled:$false
Add-NTFSAccess -Path "$($_.FullName)" -Account 'BUILTIN\Администраторы', 'NT AUTHORITY\СИСТЕМА' -AccessRights FullControl
Add-NTFSAccess -Path "$($_.FullName)" -Account $($3groups.name -match "FS-.*-r$") -AccessRights ReadAndExecute
Add-NTFSAccess -Path "$($_.FullName)" -Account $($3groups.name -match "FS-.*-rw$") -AccessRights Modify
if ($3groups.name -match "FS-.*-l$") {
  Add-NTFSAccess -Path "$($_.FullName)" -Account $($3groups.name -match "FS-.*-l$") -AccessRights ReadAndExecute -AppliesTo ThisFolderAndSubfolders
}

Наконец, для каждого каталога были убраны права для учётки «Создатель-владелец», которая портит всю картину с правами, так как стандартно каждый, кто создал что-либо в общей папке, имеет на это полный доступ, в результате через короткое время картина с правами опять превращается в хаос:

Remove-NTFSAccess -Path "$($_.FullName)" -Account "СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ" -AccessRights FullControl

3 месяца на новой работе

Что сделал, из основного:

  • Включил корзину AD, сбросил стандартные групповые политики (их бессистемно правили до этого, проанализировал, сравнил со стандартными значениями, задокументировал), затем перенёс некоторые их настройки в отдельные политики.
  • Перенастроил неправильно настроенные интерфейсы некоторых виртуальных хостов, чтобы они смотрели в отдельно взятую подсеть только одним IP-адресом.
  • Мигрировал старый файловый сервер (Windows 2003) на новый.
  • Установил и настроил Dokuwiki, Zabbix, Redmine, Nextcloud, Request Tracker, тестовый стенд HAProxy + Keepalived, обновил Exchange Edge.
  • Прошил на серверах все ILO и восстановил к ним доступ, включил в мониторинг Zabbix.
  • Ввёл в эксплуатацию несколько железных серверов.
  • Поднастроил Kaspersky Security Center, сделал разливку агента через GPO и автоустановку антивируса на рабочие станции.
  • Настроил динамические группы рассылки в Exchange, с фильтрацией по должностям (например, все сотрудники минус генеральный и его замы).

Написал на Powershell:

  • Парсер выгрузки штатного расписания из 1С.
  • Отчёт о соответствии AD штатному расписанию, генерация соответствующих команд и отчёт в почту.
  • Логон-скрипт — автоматическое прописывание в учётку пользователя в AD имени компьютера и времени входа, также ведение истории входов в CSV.
  • Автоматическое прописывание extensionAttributes пользователям в соответствии со штатным расписанием + отчёт в почту.
  • Автоматическое создание групп подразделений в AD в соответствии со штатным расписанием, со вложенностью по иерархии.
  • Автоматическое добавление и удаление пользователей и компьютеров из групп подразделений, в соответствии с ExtensionAttributes и именем компьютера в учётке пользователя + отчёт в почту об изменениях.
  • Автоматическое отключение компьютеров, не входивших в систему больше 90 дней + перемещение уже отключенных объектов в соответствующий контейнер + отчёт в почту.
  • Генерация команд для выгрузки ящиков Exchange для отключенных учёток, не входивших в систему более 180 дней, отчёт в почту.
  • Глобальная адресная книга Exchange — автоматическое удаление отключенных и добавление включенных пользователей.
  • Дополнительно — генераторы паролей, логинов, инициалов, названий групп, транслитератор, отчёты о членстве в группах AD, о правах NTFS на общих каталогах, парсер отчёта AccessEnum, парсер отчёта Kaspersky Security Center.

Skilled Migrants: does Aussie need them?

У меня то же ощущение, с той разницей, что я туда не приезжал. Оно, может, и к лучшему.

Hello All, I’m a skilled migrant recently landed in Australia, i was a professional engineer in my home country, and came here lured by the many opportunities that SEEMED available. Another reason was that my partner is Australian and wanted to come back to the country. I have a vast international background, i lived in many other countries (my father was an engineer too, and built Hydroelectric power plants all over the world), and worked with many other cultures (US, China, South America etc.) during my professional life.

So when i came here i thought this to be a country of migrants made for migrants, land of opportunity. It has anyhow turned out to be more a land of broken promises. In almost 6 months i gained no Aussie working experience, because i was never given a chance, so i actually know more of the US workplace than of this one. I followed obviously all the rules (CV Aussie style, cover letters that look like love letters and so on), sent hundreds of emails, knocked personally on many doors, considered changing my name into Simon Jones (yes i know that depending on the name my CV is read or trashed), but with no result. So here comes my question for you: Does Australia really need all these Skilled Migrants or is it just a big government run scam?

I kind of added up the numbers: DIAC estimates about 100000 migrants per year staying in the country for at least 12 months. If we average 3000$ each for the visa, another 1200$ per calendar month each of them for rent/food/survival , it adds up to a total revenue for this country of about 1.7 Billion AUS$ per year… People kill for a lot less. I have to be suspicious, because a lot of information that people receive out of the country, on the opportunities they would find here, are misleading (and yes i have verified that there is an internet filter on certain information).

Summed up, i’m leaving the country soon, going back to my humble house (that i’m lucky to own) where anyhow i can live with just 600$ a month, not before having taken from centrelink all the payback i can possibly get (do you condemn me for this? think again, i’ve spent almost 25k$ on this country). If you are a skilled professional, and you’re reading this while still in the starting phases of migration, consider deeply what you are doing. Don’t leave your home country before securing a job on this side, this is the best suggestion i can give you.

http://forums.whirlpool.net.au/archive/2258184

Красота на работе

Недавно научился прошивать микропрограммы в сетевых устройствах фирмы APC, теперь прошиваю всё, до чего могу дотянуться.

Сегодня на очереди были распределители питания в серверной (говоря проще, это такие длинные «пилоты» для серверных стоек, но только жутко умные, сетевые и с экранчиком).

Как я менял батарейки в бесперебойниках

Закупили батареечек для ИБП на работе, последние несколько дней плотно занимаюсь их заменой.

Сначала нужно достать батарейный блок.

Отвинчиваем 8 винтиков, открываем крышку.

Выдёргиваем перемычки, отколупываем самоклеящиеся ножки.

Меняем батарейки, соединяем, наклеиваем ножки обратно.

Блок готов.

Не забываем и об эстетике. Упаковываем старые батареи обратно в коробки, прокладываем шлейф для удобного извлечения.

Упаковываем колпачки от клемм в пакетик.

Куча фантиков от батареек — в отдельной коробке.

Складываем коробки со старыми аккумуляторами в аккуратный штабель.

С большой Симметрой закончили, дальше идём менять батарейки в полуторакиловаттном бесперебойнике. Здесь есть несколько особенностей — батареи приклеены к основанию батарейного блока на двусторонний скотч, и просто так руками выковырять батареи из этого блока невозможно. Приходится брать гаечный ключ из твёрдого металла и, упираясь в боковую часть одной батареи, выкорчёвывать другую, затем наоборот. Также, у клемм есть стопор, который нужно отстёгивать, вклинивая туда тонкую шлицевую отвёртку.

Ну вот, наконец-то работа закончена.

Поеду-ка я домой, пожалуй.