Необходимо получить другую версию mt, который действительно поддерживает сжатие. Канонический Linux mt
mt-st
. Вот источник для mt-st.
Вот практическое руководство с некоторой хорошей информацией об использовании ленточных накопителей в Linux.
Можно использовать mt status
определить, включено ли сжатие для конкретного устройства.
Прошло много времени с тех пор, как я работал с LDAP, но я думаю, что каждый сервер LDAP может предоставлять схему в определенном суффиксе.
Я думаю, что в Openldap вы можете искать в базе «cn = schema, cn = config», чтобы найти текущую схему.
Попробуйте что-нибудь вроде ldapsearch -x -s sub -b "cn = schema, cn = config" '(objectclass = *)'
, чтобы увидеть, что вы получите. (Не тестировал эту командную строку, но вы поняли ...).
С точки зрения разработчика, я ожидал бы, что существует правильная схема, и обрабатывать исключение нарушения объектного класса, как если бы оно было любым ошибки.
Я думаю, что изменение схемы должно выполняться не приложением, которое добавляет / удаляет данные, а процедурой установки программного обеспечения.
Вам нужна подсхема Subentry
.
RFC 2252
Облегченный протокол доступа к каталогам (v3): определения синтаксиса атрибутов
5.1.5. subschemaSubentry
Значением этого атрибута является имя записи подсхемы (или подстатью, если сервер основан на X.500 (93)), в которой сервер делает доступными атрибуты, определяющие схему.
(2.5.18.10 NAME 'subschemaSubentry' РАВЕНСТВО отличное ИмяСоответствие СИНТАКСИС 1.3.6.1.4.1.1466.115.121.1.12 БЕЗ ПОЛЬЗОВАТЕЛЬСКИХ МОДИФИКАЦИЙ Однозначное использование каталога Операция)
Вы можете найти это так:
$ ldapsearch -s base -b '' subschemaSubentry
dn:
subschemaSubentry: cn=Subschema
$ ldapsearch -s base -b cn=Subschema objectClasses
Одной строкой:
ldapsearch -s base -b $(ldapsearch -s base -b '' subschemaSubentry | sed '/dn:/d;/^$/d;s/subschemaSubentry: //' ) objectClasses
Если вы пишете сценарий в bash и ваша версия ldapsearch поддерживает его, -o ldif-wrap = no
будет означают, что вам не нужно разбирать перенос строки ldif.
cn = schema, cn = config
, хотя и удобен, обычно недоступен в OpenLDAP из-за контроля доступа, унаследованного от cn = config
.
Это то, что я используйте, чтобы показать схему конкретного объектного класса, например organizationRole
$ ldapsearch -s base -b cn=Subschema objectClasses -LLL -o ldif-wrap=no |\
sed -nr '/organizationalRole/ p' | sed -r 's/[$()]+/\n /g'
Простые подходы к сценариям оболочки / awk вообще не работают из-за наследования классов объектов. Вы должны оценить это, чтобы действительно заранее узнать, что сервер LDAP будет делать с вашим запросом на добавление / изменение. (По крайней мере, я понимаю, чего вы хотите достичь.)
Если вы не против создания сценариев на Python, вы можете использовать модуль python-ldap ldap.schema , который я реализовал полностью поддержка схемы в web2ldap . Помимо наследования классов объектов, он также заботится о правилах содержимого DIT, что очень важно для правильного составления списков атрибутов с помощью MS AD.
Обратите внимание: реализация общего решения не является тривиальной задачей! И в зависимости от используемого сервера LDAP вы обнаружите несколько неполные ссылки на схемы, и вам придется реализовать обработку отката здесь и там.
Я точно знаю только один клиент LDAPv3, реализующий полный ] Поддержка схемы LDAP. ; -)