Когда-то обе эти утилиты были в репозиториях убунты, но по какой-то причине их оттуда убрали. А зря.
По сути, это оболочка над клиентом OpenLDAP, позволяющая максимально комфортно обращаться к ADDS из-под линукса. Распространяется в исходниках, работает нормально.
https://gp2x.org/adtool/
В комплекте идет довольно короткий но понятный ман: https://gp2x.org/adtool/usage.html. Из-за ограниченных прав в домене, я больше всего использую команды search (поиск объектов по значению атрибута) и list (просмотр содержимого контейнера), которых как раз недостает в самбовской net.
Базовые параметры - имя пользователя, пароль, узел, от которого начинается поиск, имя сервера AD - можно задавать каждый раз в командной строке или один раз в файле конфигурации.
Например:
(примеры ниже - фрагменты реальных скриптов или цепочек команд, которые приходилось сочинять, решая свои задачи)
# найти владельцев компьютеров
cnt30 - общая часть имени всех компьютеров в домене contoso30 :-) Имена имеют вид cnt30xxxz, где xxx:=[0-9]{3}, а z:=[0-9a-z]
echo - для красоты выводится синтезированное имя компютера - из префикса и значения счетчика цикла
adtool attributeget... - ищем атрибут managedby у объекта с именем cnt30xxxz и выводим его значение.
# То же самое, но не по списку имен,а по содержимому конкретной OU
# сначала выводится имя компа, следующей строкой владелец. Если владелец не задан, второй строки нет
IFS - чтобы счетчик цикла по строкам принимал значение всей строки, устанавливаем разделителем слов признак конца строки. Поскольку вся цепочка команд в одной строке, то такое изменение будет действовать только для этой цепочки и после ее выполнения переменная IFS получит свое исходное значение.
Первый adtool в описании цикла выводит список компьютеров, находящихся в OU=330.
По непонятной мне причине, возвращается всегда полное, с путём имя объекта, а вот для поиска надо указывать только его CN, поэтому из каждой возвращенной строки sed-ом вырезаем начальное "CN=" и всё от первой запятой до конца строки, получая только имя компьютера без "обвеса".
Это имя скармливаем второму adtool, который вытаскивает атрибут managedby.
# посмотреть, в каком состоянии учётка, не заблокирована ли она
# писалось просто из интереса, поэтому очень грубо. Желающие могут добавить различные навороты.
Поскольку значения атрибутов возвращаются в десятичном виде, то для удобства преобразую результат в 16-ричный. Возможно, есть более простой способ такого преобразования, но мне было лень его искать.
(hex/dec) интересующие меня значения этого атрибута.
комп
1022/4130 - заблокирован
1020/4128 - активен
пользователь
202/514 - заблокирован
200/512 - активен
Список атрибутов различных элементов AD можно посмотреть, например, здесь:
http://www.kouti.com/tables/userattributes.htm
Несколько примеров есть на странице, откуда я и попал на страницу самой утилиты:
http://khmel.org/?p=634
Для удобства я свел несколько наиболее нужных мне запросов (батарея, монитор и кое-что еще в один скрипт, который лежит в /usr/local/bin рядом с бинарником.
Спросим у компа, есть ли у него батарея/ИБП
-A ~/auth - авторизуемся на жертве данными из файла, остальное понятно.
$ wmicc.sh cnt301202
CLASS: Win32_Battery
Availability|BatteryRechargeTime|BatteryStatus|Caption|Chemistry|ConfigManagerErrorCode|ConfigManagerUserConfig|CreationClassName|Description|DesignCapacity|DesignVoltage|DeviceID|ErrorCleared|ErrorDescription|EstimatedChargeRemaining|EstimatedRunTime|ExpectedBatteryLife|ExpectedLife|FullChargeCapacity|InstallDate|LastErrorCode|MaxRechargeTime|Name|PNPDeviceID|PowerManagementCapabilities|PowerManagementSupported|SmartBatteryVersion|Status|StatusInfo|SystemCreationClassName|SystemName|TimeOnBattery|TimeToFullCharge
2|0|2|Internal Battery|3|0|False|Win32_Battery|Internal Battery|0|12840|3B1439X26738 American Power ConversionBack-UPS XS 650CI FW:892.R3 .I USB FW:R3 |False|(null)|100|43|0|0|0|(null)|0|0|Back-UPS XS 650CI FW:892.R3 .I USB FW:R3 |(null)|(1)|False|(null)|OK|0|Win32_ComputerSystem|CNT301202|0|0
Как видно, возвращается две строки, в первой заголовки, во второй значения. Ну а распарсить такую табличку средствами CLI - плёвое дело. Да и многочисленные параметры самого WMIC позволяют много чего наворотить.
ADTool
ADTool не имеет никакого отношения к рекламе (advertising), зато имеет конкретное отношение к активному каталогу (Active Directory).По сути, это оболочка над клиентом OpenLDAP, позволяющая максимально комфортно обращаться к ADDS из-под линукса. Распространяется в исходниках, работает нормально.
https://gp2x.org/adtool/
В комплекте идет довольно короткий но понятный ман: https://gp2x.org/adtool/usage.html. Из-за ограниченных прав в домене, я больше всего использую команды search (поиск объектов по значению атрибута) и list (просмотр содержимого контейнера), которых как раз недостает в самбовской net.
Базовые параметры - имя пользователя, пароль, узел, от которого начинается поиск, имя сервера AD - можно задавать каждый раз в командной строке или один раз в файле конфигурации.
Например:
(примеры ниже - фрагменты реальных скриптов или цепочек команд, которые приходилось сочинять, решая свои задачи)
# найти владельцев компьютеров
for a in 0021 002a 003v 0051 005b; do echo -n CNT30$a\:;adtool attributeget cnt30$a managedby;done|sort
cnt30 - общая часть имени всех компьютеров в домене contoso30 :-) Имена имеют вид cnt30xxxz, где xxx:=[0-9]{3}, а z:=[0-9a-z]
echo - для красоты выводится синтезированное имя компютера - из префикса и значения счетчика цикла
adtool attributeget... - ищем атрибут managedby у объекта с именем cnt30xxxz и выводим его значение.
# То же самое, но не по списку имен,а по содержимому конкретной OU
# сначала выводится имя компа, следующей строкой владелец. Если владелец не задан, второй строки нет
IFS=$(echo -en "\n\b");for a in `adtool list "OU=330,OU=comps,OU=Domain Root Entry,DC=contoso,DC=com"|grep -v "error:"|sort`; do b=$(echo $a|sed -e 's/CN=//;s/,.*$//');echo $b\;;adtool attributeget $b managedby; done|pager
IFS - чтобы счетчик цикла по строкам принимал значение всей строки, устанавливаем разделителем слов признак конца строки. Поскольку вся цепочка команд в одной строке, то такое изменение будет действовать только для этой цепочки и после ее выполнения переменная IFS получит свое исходное значение.
Первый adtool в описании цикла выводит список компьютеров, находящихся в OU=330.
По непонятной мне причине, возвращается всегда полное, с путём имя объекта, а вот для поиска надо указывать только его CN, поэтому из каждой возвращенной строки sed-ом вырезаем начальное "CN=" и всё от первой запятой до конца строки, получая только имя компьютера без "обвеса".
Это имя скармливаем второму adtool, который вытаскивает атрибут managedby.
# посмотреть, в каком состоянии учётка, не заблокирована ли она
# писалось просто из интереса, поэтому очень грубо. Желающие могут добавить различные навороты.
adtool attributeget cnt305311 useraccountcontrol|awk '{ printf "%X", $1 ; print ""}'
Поскольку значения атрибутов возвращаются в десятичном виде, то для удобства преобразую результат в 16-ричный. Возможно, есть более простой способ такого преобразования, но мне было лень его искать.
(hex/dec) интересующие меня значения этого атрибута.
комп
1022/4130 - заблокирован
1020/4128 - активен
пользователь
202/514 - заблокирован
200/512 - активен
Список атрибутов различных элементов AD можно посмотреть, например, здесь:
http://www.kouti.com/tables/userattributes.htm
Несколько примеров есть на странице, откуда я и попал на страницу самой утилиты:
http://khmel.org/?p=634
WMIC
Я взял версию, которая входит в состав OpenVAS - системы проверки на уязвимости. Вся система мне не нужна, а вот один ее компонент нужен и даже очень. Я взял wmi-1.3.14.tar.bz2. Скомпилировал. Получил возможность опрашивать по WMI виндовые компы из-под линукса. Что еще надо?Для удобства я свел несколько наиболее нужных мне запросов (батарея, монитор и кое-что еще в один скрипт, который лежит в /usr/local/bin рядом с бинарником.
Спросим у компа, есть ли у него батарея/ИБП
wmic -A ~/auth //$1.contoso.com "SELECT * FROM Win32_battery"
-A ~/auth - авторизуемся на жертве данными из файла, остальное понятно.
$ wmicc.sh cnt301202
CLASS: Win32_Battery
Availability|BatteryRechargeTime|BatteryStatus|Caption|Chemistry|ConfigManagerErrorCode|ConfigManagerUserConfig|CreationClassName|Description|DesignCapacity|DesignVoltage|DeviceID|ErrorCleared|ErrorDescription|EstimatedChargeRemaining|EstimatedRunTime|ExpectedBatteryLife|ExpectedLife|FullChargeCapacity|InstallDate|LastErrorCode|MaxRechargeTime|Name|PNPDeviceID|PowerManagementCapabilities|PowerManagementSupported|SmartBatteryVersion|Status|StatusInfo|SystemCreationClassName|SystemName|TimeOnBattery|TimeToFullCharge
2|0|2|Internal Battery|3|0|False|Win32_Battery|Internal Battery|0|12840|3B1439X26738 American Power ConversionBack-UPS XS 650CI FW:892.R3 .I USB FW:R3 |False|(null)|100|43|0|0|0|(null)|0|0|Back-UPS XS 650CI FW:892.R3 .I USB FW:R3 |(null)|(1)|False|(null)|OK|0|Win32_ComputerSystem|CNT301202|0|0
Как видно, возвращается две строки, в первой заголовки, во второй значения. Ну а распарсить такую табличку средствами CLI - плёвое дело. Да и многочисленные параметры самого WMIC позволяют много чего наворотить.
Комментариев нет:
Отправить комментарий
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.