Solaris ネーミングの管理

第 27 章 FNS 属性の管理

この章では、FNS 属性と、その管理の方法について説明します。

属性の概要

属性は、名前付きオブジェクトに使用することができます。属性はオプション指定ですから、属性のないオブジェクトもあれば、1 つあるいは複数の属性を持つオブジェクトもあります。

属性はユニークな属性識別子、属性構文、および 0 個以上の明確な属性値のセットからなります。

XFN で、既存の名前付きオブジェクトに対応する属性値の検索や変更のための、基本的な属性インタフェースが定義されます。これらのオブジェクトはコンテキストの場合もあれば、別のタイプのオブジェクトの場合もあります。コンテキストに関連しているのは、構文属性で、これはコンテキストがどのように複合名を解析するかを示します。

拡張属性インタフェースには、特定の属性を検索したり、オブジェクトやそれに対応する属性を作成するオペレーションが含まれます。

属性を検索する

fnsearch コマンドで、属性を検索します。

fnsearch コマンドの構文を以下に示します。


fnsearch [-ALlv] [-n max] [-s scope] name [-a ident ]... [-O|-U] filter_expr [ filter_arg]

表 27-1 fnsearch コマンドのオプション

オプション 

説明 

-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 フィルタ表現の演算子

フィルタ表現演算子 

シンボル、あるいは形式 

論理演算子 

orandnot

グルーピングのための丸括弧 

( )

関係演算子:ある属性を入力した値と比較する 

== 少なくとも 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]
表 27-3 fnattr コマンドのオプション

オプション 

説明 

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 と値 hplaserthisorgunit/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+]]

削除対象の指定には以下の規則があります。

以下の例では、thisorgunit/service/printer のすべての属性が削除されます。


# fnattr -d thisorgunit/service/printer

属性の内容を表示する

属性の内容を表示するには、-l オプションを使用します。構文は以下のとおりです。


fnattr -l name [[-O | -U]  identifier]

以下の例では、thisorgunit/service/printermodel 属性の値が表示されます。


# 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) を使用します。