この章では、FNS 属性と、その管理の方法について説明します。
属性は、名前付きオブジェクトに使用することができます。属性はオプション指定ですから、属性のないオブジェクトもあれば、1 つあるいは複数の属性を持つオブジェクトもあります。
属性はユニークな属性識別子、属性構文、および 0 個以上の明確な属性値のセットからなります。
XFN で、既存の名前付きオブジェクトに対応する属性値の検索や変更のための、基本的な属性インタフェースが定義されます。これらのオブジェクトはコンテキストの場合もあれば、別のタイプのオブジェクトの場合もあります。コンテキストに関連しているのは、構文属性で、これはコンテキストがどのように複合名を解析するかを示します。
拡張属性インタフェースには、特定の属性を検索したり、オブジェクトやそれに対応する属性を作成するオペレーションが含まれます。
fnsearch [-ALlv] [-n max] [-s scope] name [-a ident ]... [-O|-U] filter_expr [ filter_arg] |
オプション |
説明 |
---|---|
-n max |
オブジェクトの最大数だけを表示する |
-s scope |
検索の範囲を設定する |
-a ident |
ident に一致する属性だけを表示する |
name |
複合名 |
filter_expr |
ブール、論理、グルーピング、リレーショナル、比較演算子 (表 27-2 参照) |
filter_arg |
フィルタ表現の引数 (表 27-2 参照) |
-A |
信頼できるソースだけを参照する |
-L |
XFN リンクに従う |
-l |
一致するオブジェクトのオブジェクトリファレンスを表示する |
-v |
詳細表示。一致するオブジェクトの詳細なオブジェクトリファレンスを表示する |
-O |
識別子にOSI OIDを使用する |
-U |
識別子にDCE UUIDを使用する |
fnsearch コマンドを使って、選択した属性に対応するオブジェクトを検索できます。
たとえば、orgunit/sales/site/ の中の for_sale という属性に対応している属性をすべて見つけ出す場合、以下のコマンドを入力します。
% fnsearch orgunit/sales/site/ for_sale |
検索パターンにおいて、フィルタ表現のうち以下のすべてを使用することもできます。
表 27-2 fnsearch フィルタ表現の演算子
フィルタ表現演算子 |
シンボル、あるいは形式 |
---|---|
論理演算子 |
or、and、not |
グルーピングのための丸括弧 |
( ) |
関係演算子:ある属性を入力した値と比較する |
== 少なくとも 1 つの属性値が、入力した値に等しい場合、True (真) != 入力した値に等しい属性値がまったくない場合、True (真) < 少なくとも 1 つの属性値が、入力した値より小さい場合、True (真) <= 少なくとも 1 つの属性値が、入力した値よりも小さいか等しい場合、True (真) >少なくとも 1 つの属性値が、入力した値よりも大きい場合、True (真) >= 少なくとも 1 つの属性値が、入力した値よりも大きいか、等しい場合、True (真) ‾= 少なくとも 1 つの属性値が、いくつかのコンテキスト特有のおおまかな一致条件に照らして、入力した値に一致している場合、True (真)。この条件は厳密な一致を含む必要がある |
例 |
% fnsearch name "not (make == 'olds' and year == 1983)" |
置換トークン: シェルスクリプトを書くときに役に立ち、-O および -U オプションを指定すると、OSI OID および DCE UUID を使用できる |
%a は、属性に置き換えられる %s は、文字列に置き換えられる %i は、識別子に置き換えられる %v は、属性値に置きかえられる (現在は、fn_attr_syntax_ascii しかサポートされていない) |
例: |
以下の 3 つの例はどれも同じ % fnsearch name "color == 'red'" % fnsearch name "%a == 'red'" color % fnsearch name "%a == %s" color red |
ワイルドカード文字列 |
*, *string, string*, str*ing, %s* |
拡張演算子 |
'name'(ワイルドカードを使った文字列), 'reftype'(識別子), 'addrtype' (識別子) |
例: |
名前が "Bill" で始まり、IQ 属性が 80 以上のオブジェクトを検索する % fnsearch name "'name'('bill'*) and IQ > 80" |
検索パターン作成の詳細は、fnsearch(1) マニュアルページを参照してください。
fnattr コマンドにより、FNS 名前付きオブジェクトに関連する属性を更新したり検索できます。fnattr コマンドを使って、以下の 4 つの属性に関する操作が行えます。
fnattr -a [-s] name [-O|-U] identifier values |
fnattr -d name [[-O|-U] identifier [values]] |
fnattr -m name [-O|-U] identifier oldvalue newvalue |
fnattr -l name [[-O|-U] identifier] |
オプション |
説明 |
---|---|
name |
複合名 |
identifier |
属性名 |
values |
1 つあるいは複数の属性値 |
oldvalue |
変更する属性値 |
newvalue |
新しい属性値 |
-a |
新しい属性値を追加 (作成) する |
-d |
属性を削除する |
-m |
属性を変更 (修正) する |
-l |
属性値を一覧表示する |
-s |
「代用」モードで追加する。identifier 属性に対する既存の値をすべて削除し、新しい属性値を作成する |
-l |
属性と値を一覧表示する |
-O |
識別子として OSI OID を使用する |
-U |
識別子として DCE UUID を使用する |
各オプションでの識別子の形式は、-O あるいは -U のオプションを使用していない限り、FN_ID_STRING になります。
属性を追加したり、属性に値を追加したりするには、-a オプションを使用します。この場合、複合名、属性識別子、追加する値も指定します。
fnattr -a [-s] name [-O | -U] identifier value1 [ value2+] |
以下の例では、属性識別子 model と値 hplaser が thisorgunit/service/printer に追加されます。
# fnattr -a thisorgunit/service/printer model hplaser |
-s は、「代用モードで追加する」という意味のオプションです。指定の識別子を持つ属性がすでに存在する場合、-s はその値をすべて削除し、それらを追加した値に置き換えます。このオプションを指定しないと、指定した属性の値には既存の値と追加した新しい値の両方が含まれることになります。
# fnattr -as thisorgunit/service/printer model hplaser |
上の例では最初に model に対応する値をすべて削除し、hplaser を値として追加します。
FNS 名前付きオブジェクトの属性を削除するには、-d オプションを使用します。
fnattr -d name [[-O | -U] identifier value1 [ value2+]] |
削除対象の指定には以下の規則があります。
名前のみ。複合名だけを指定し、属性識別子を指定しないと、名前付きオブジェクトの属性はすべて削除される
名前および識別子のみ。複合名と属性識別子だけを指定し、属性値を指定しない場合、「identifier」によって識別された属性全体が削除される
名前、識別子、および値。複合名、属性識別子、および 1 つあるいは複数の属性値を指定した場合、これらの値だけが属性から削除される。属性の最後に残っている値が削除されると、属性自体が削除されたのと同じ結果になる
以下の例では、thisorgunit/service/printer のすべての属性が削除されます。
# fnattr -d thisorgunit/service/printer |
属性の内容を表示するには、-l オプションを使用します。構文は以下のとおりです。
fnattr -l name [[-O | -U] identifier] |
以下の例では、thisorgunit/service/printer の model 属性の値が表示されます。
# fnattr -l thisorgunit/service/printer model laser postscript |
識別子を指定しない場合、オブジェクトのすべての属性の内容が表示されます。
属性値を変更するには、-m オプションを使用します。構文は以下のとおりです。
fnattr -m name [-O | -U] identifier old_value new_value |
以下の例では、postscript という値が laser に変更されます。thisorgunit/service/printer の他の属性 (およびその値) には影響がありません。
# fnattr -m thisorgunit/service/printer model postscript laser |
-O オプションを指定した場合、属性識別子の形式には、ASN.1 の整数を並べてドットで区切る形式 (FN_ID_ISO_OID_STRING、10 進数を並べてドットで区切る形式) を使用します。
-U オプションを指定した場合、属性識別子の形式には、DCE UUID 文字列 (FN_ID_DCE_UUID) を使用します。