openldap---ldapsearch使用

ldapsearch 參數表
下表描寫敘述可以用於 ldapsearch 的區分大寫和小寫的參數。 服務器

參數 用途
-? 打印關於使用 ldapsearch 的幫助。
-a deref 指定別名反向引用。請輸入 never、always、search 或 find。假設不使用此參數,缺省爲 never。
-A 僅僅檢索屬性的名稱,而不檢索屬性的值。
-b base dn 指定用做搜索起始點的專有名稱。使用引號來指定該值,好比:"ou=West,o=Acme,c=US"

假設要搜索的server需要指定搜索起點,則必須使用此參數。不然此參數是可選的。 網絡

也可以同一時候使用 -b 和 -s 來肯定搜索範圍。沒有 –s,-b 就會搜索指定爲起始點的項以及該項的所有子項。 dom

-B 贊成打印非 ASCII 值
-D bind dn 指定server用於驗證您的專有名稱。名稱必須與文件夾中的項相符,並且必須擁有搜索文件夾所需的權限。

請使用引號來指定該名稱,好比:"cn=Directory Manager,o=Acme,c=US" 工具

假設不使用此參數,則與server的鏈接是匿名的。假設server不一樣意匿名鏈接,則必須使用 -D。 spa

除了 -D,還必須使用 -w 參數來指定與專有名稱相關聯的口令。 命令行

-f file 指定包括要使用的搜索過濾器的文件,如 -f 過濾器。請將每個搜索過濾器置於單獨的一行。Ldapsearch 會對每一行運行一次搜索。可選擇指定過濾模式。好比,指定 -f 過濾 "cn=%s",並在文件的每一行中輸入公用名稱的值。
-F sep 在屬性名稱和值之間打印 sep 而不是等號 (=)。好比,假設讀取 ldapsearch 輸出的工具但願使用其它的分隔符時,可以使用此參數。
-h host name 指定要鏈接的服務器主機名,如 -h server.acme.com。
-l timelimit 指定完畢搜索的時間限制(秒)。假設沒有指定此參數或指定的限制爲 0,那麼搜索就沒有時間限制。但是,ldapsearch 的等待時間決不會超過server上設置的搜索時間限制。
-L 指定以 LDIF 格式輸出。LDIF 格式使用冒號 (:) 而不是等號 (=) 做爲屬性描寫敘述符。LDIF 對一次性加入或改動大量文件夾項很是有幫助。好比,可以將輸出內容引入兼容 LDAP 的文件夾中。
-M 將參考對象做爲普通項進行管理,以使 ldapsearch 可返回參考項自己的屬性,而不是所參考的項的屬性。
-n 顯示怎樣運行搜索,但不實際運行搜索
-p port 指定server使用的port。假設沒有使用此參數,缺省狀況下 ldapsearch 使用 389 port。
-R 不本身主動遵循server返回的搜索引用。請注意,Netscape 文件夾server將術語 referrals 用於搜索引用。
-s scope 指定使用 -b 參數時的搜索範圍:
  • base -- 僅搜索 -b 參數指定的項
  • onelevel -- 僅搜索 -b 參數指定項的直接子項,而不搜索該項自己
  • subtree -- 搜索 -b 參數指定的項以及它的所有子項。這是不帶 -s 時使用 -b 的缺省行爲。
指定 -b 和 -s 的順序並不重要。
-S attribute 按指定的屬性排序結果。
-z sizelimit 指定返回項的最大數目。假設沒有指定此參數或指定的限制爲 0,那麼返回的項沒有數量限制。但是,ldapsearch 返回的項決不會多於server贊成的數量。
-u 指定 ldapsearch 以用戶友好格式返回專有名稱。
-v 指定 ldapsearch 以詳盡模式執行。
-w password 指定與 -D 參數一塊兒使用的與專有名稱關聯的口令。
x 與 -S 一塊兒使用時可指定 LDAP server在將結果返回以前就對它們進行排序。假設使用 -S 而不使用 –x,ldapsearch 將對結果排序。


ldapsearch 搜索過濾器中使用的運算符表
下表描寫敘述了可以在搜索過濾器中使用的運算符。 server

運算符 用途 例子
= 查找所包括的屬性值與指定值一樣的項 "cn=John Browning"
= <string>*<string> 查找所包括的屬性值與指定的子字符串一樣的項 "cn=John*"

"cn=J*Brown" 對象

>= 查找特定項,該項中包括的屬性的數字或字母值大於或等於指定的值。 "cn>=D"
<= 查找特定項,該項中包括的屬性的數字或字母值小於或等於指定的值。 "roomNumber<=300"
=* 查找包括特定屬性的值的項,而不用管屬性的值是什麼。 "sn=*"
~= 查找特定項,該項中所含屬性的值約等於指定的值。 "sn~=Brning" 可能返回 sn=Browning
& 查找與所有搜索過濾器中指定的條件相匹配的項 "(&(cn=John Browning)(l=Dallas))"
| 查找與至少一個搜索過濾器中指定的條件相匹配的項 "(|(cn=John Browning)(l=Dallas))"
! 查找與不論什麼搜索過濾器中指定的條件都不匹配的項 "(!(cn=John Browning)(l=Dallas))"


使用 ldapsearch 的搜索過濾器
必須使用搜索過濾器指定要搜索的屬性。搜索過濾器的語法爲: 排序


    "<attribute> <operator> <value>"


好比,如下的搜索過濾器可以找到所有的特定項,僅僅要該項中以 Smith 做爲 sn(別稱)屬性的值: 索引


    "sn=Smith"


可以在搜索過濾器中指定存儲在文件夾中的隨意屬性。下面是用來搜索我的項的公用屬性:

  • cn -- 我的的公用名稱
  • sn -- 我的的姓
  • telephonenumber -- 我的的電話號碼
  • l -- 我的的地理位置


可以在 ldapsearch 命令行中指定搜索過濾器,或在文件裏指定它們,並使用 lsearch 參數 -f 引用此文件。假設使用文件,請在單獨的行中指定每個搜索過濾器。

請注意:假設 LDAP 文件夾(如 Domino LDAP 文件夾)支持語言標記,則可在搜索過濾器中包括它們。好比:


    "givenName;lang-fr=Etienne"


使用布爾運算符的多個搜索過濾器

您可以使用多個搜索過濾器以及布爾運算符。使用下列語法:


    "(operator(filter)(filter))"


好比,使用如下的搜索過濾器查找別稱爲 Browning、位置爲 Dallas 的項。


    "(&(sn=Browning)(l=Dallas))"


布爾運算符可以嵌套。好比,使用如下的搜索過濾器在郵件網絡域 MDN 中查找 surname 爲 caneel 或 givenname 爲 alfred 的項:


    "(&(maildomain=MDN)(|(sn=caneel)(givenname=alfred)))"



使用 ldapsearch 的例子

下表提供使用 ldapsearch 有用程序的例子。

搜索 命令
使用port 389 的主機 ldap.acme.com 上的所有項,並返回所有屬性和值 ldapsearch -h ldap.acme.com "objectClass=*"
同上,但僅返回屬性名稱 ldapsearch -A -h ldap.acme.com" objectClass=*"
使用port 389 的主機 ldap.acme.com 上的所有項,並且反向引用找到的所有別名 ldapsearch -a always -h ldap.acme.com "objectClass=*"
使用port 389 的主機 ldap.acme.com 上的所有項,並返回 mail、cn、sn 和 givenname 等屬性 ldapsearch -h ldap.acme.com "objectClass=*" mail cn sn givenname
在使用port 389 的主機 ldap.acme.com 上,在 」ou=West,o=Acme,c=US」 基準下搜索 (cn=Mike*),並返回所有屬性和值 ldapsearch -b "ou=West,o=Acme,c=US" -h ldap.acme.com "(cn=Mike*)"
使用port 389 的主機 ldap.acme.com 上的一個級別,並返回所有屬性和值 ldapsearch -s onelevel -h ldap.acme.com "objectClass=*"
同上,但限制基準的範圍 ldapsearch -s base -h ldap.acme.com "objectClass=*"
使用port 389 的主機 ldap.acme.com 上的所有項,並返回所有的屬性和值;搜索時間限制爲五秒 ldapsearch -l 5 -h ldap.acme.com "objectClass=*"
使用port 389 的主機 ldap.acme.com 上的所有項,並返回所有的屬性和值;限制大小爲五 ldapsearch -z 5 -h ldap.acme.com "objectClass=*"
使用port 389 的主機 ldap.acme.com 上的所有項,捆綁爲:用戶「cn=John Doe,o=Acme」,口令「password」,並以 LDIF 格式返回所有的屬性和值 ldapsearch -h ldap.acme.com -D "cn=john doe,o=acme" -w password -L "objectClass=*"
使用port 389 的主機 ldap.acme.com。對「cn=John Doe,o=Acme」項,返回其贊成匿名查看的所有屬性 ldapsearch -h ldap.acme.com" -s base -b "cn=john doe,o=acme" objectClass=*"
配置爲在port 391 上偵聽 LDAP 請求的還有一臺主機 bluepages.ibm.com 上的所有項 ldapsearch -h bluepages.ibm.com -p 391 "objectClass=*"
port 391 上的 bluepages.ibm.com。對還有與 OR 過濾器中隨意一個屬性相匹配的屬性的不論什麼「我的」對象類型進行子樹搜索(缺省),從組織「o=ibm」開始。超時值爲 300 秒,返回的最大項數設爲 1000。且僅返回 DN(缺省)和 CN(這是 Web 應用程序的公用過濾器)。 ldapsearch -h bluepages.ibm.com -p 391 -b "o=ibm" -l 300 -z 1000 "(&(objectclass=Person)(|(cn=jerry seinfeld*)(givenname=jerry seinfeld*)(sn=jerry seinfeld*)(mail=jerry seinfeld*)))" cn
port 391 上的 bluepages.ibm.com。以基準項「cn=HR Group,ou=Asia,o=IBM」爲起始,時間限制爲 300 秒,查詢此項的所有成員。(Web 應用程序中用以肯定羣組成員的還有一個公用過濾器)。 ldapsearch -h bluepages.ibm.com -p 391 -b "cn=HR Group,ou=Asia,o=IBM" -s base -l 300 "(objectclass=*)" member
相關文章
相關標籤/搜索