Go to main content

Oracle® ZFS Storage Appliance 管理ガイド、Release OS8.8.x

印刷ビューの終了

更新: 2021 年 8 月
 
 

CLI コンテキスト

CLI における中心的な原則は、コマンドが実行されているコンテキストです。このコンテキストによって、システムのどの要素を管理できるか、およびどのコマンドを使用できるかが規定されます。コンテキストには、各コンテキスト自体に入れ子のコンテキストが含まれている可能性のあるツリー構造があり、一般には、この構造によって BUI 内のビューの構造がミラー化されています。

ログイン時の初期コンテキストはルートコンテキストであり、すべてのコンテキストの親または上位コンポーネントとして機能します。コンテキストに移動するには、そのコンテキストの名前をコマンドとして実行します。たとえば、ブラウザ内の「構成」ビューで使用可能な機能は、CLI の configuration コンテキストで使用できます。次のように、ルートコンテキストから直接入力してこのコンテキストにアクセスできます。

hostname:> configuration
hostname:configuration>

プロンプト内のコロンと大なり記号の間にコンテキストが表示されており、プロンプトがコンテキストを反映して変更されます。

show コマンドは子コンテキストを表示します。たとえば、configuration コンテキストから実行すると、次のようになります。

hostname:configuration> show
Children:
                             net => Configure networking
                        services => Configure services
                         version => Display system version
                           users => Configure administrative users
                           roles => Configure administrative roles
                     preferences => Configure user preferences
                          alerts => Configure alerts
                         storage => Configure Storage

これらの子コンテキストは、「ネットワーク」、「サービス」、「ユーザー」、「プリファレンス」などの、ブラウザ内の「構成」ビューの下で使用可能なビューに対応しています。これらの子コンテキストのいずれかを選択するには、その名前を入力します。

hostname:configuration> preferences
hostname:configuration preferences>

中間のコンテキストを空白で区切って指定することによって、上位コンテキストから直接下位コンテキストに移動できます。たとえば、ルートコンテキストから直接 configuration preferences に移動するには、単に次のように入力します。

hostname:> configuration preferences
hostname:configuration preferences>

一部の子コンテキストは、ブラウザ内の固定されたビューにではなく、ユーザーまたはシステムのどちらかによって作成された動的なエンティティーに対応しているという点で動的です。これらのコンテキストに移動する方法は 2 つあります。select コマンドを使用し、そのあとに動的コンテキストの名前を指定することも、動的コンテキストの名前を二重引用符で囲むこともできます。特定のコンテキスト内に含まれている動的コンテキストの名前は、list コマンドを使用して表示されます。たとえば、users コンテキストは静的コンテキストですが、各ユーザーは独自の動的コンテキストです。

hostname:> configuration users
hostname:configuration users> list 
NAME                     USERNAME                 UID        TYPE
John Doe                 bmc                      12345      Dir
Super-User               root                     0          Loc

bmc という名前のユーザーを選択するには、コマンド select bmc または "bmc" を発行します。

hostname:configuration users> "bmc"
hostname:configuration users bmc>

あるいは、二重引用符、select および destroy を一部のコンテキストで使用すると、プロパティーに基づいてエンティティーを選択できます。たとえば、次のコマンドを発行することによって、maintenance logs system コンテキストで reboot モジュールによって発行されたログエントリを選択できます。

hostname:maintenance logs system> select module=reboot
hostname:maintenance logs system entry-034> show
Properties:                                   
  timestamp = 2019-10-14 06:24:41
     module = reboot
   priority = crit
       text = initiated by root on /dev/console syslogd: going down on signal 15

ほかのコマンドと同様に、select または二重引用符をコンテキスト変更コマンドに追加することもできます。たとえば、ルートコンテキストから bmc という名前のユーザーを選択するには、次のコマンドを実行します。

hostname:> configuration users select bmc
hostname:configuration users bmc>

last コマンドを使用すると、前に選択または作成したコンテキストに移動できます。次の例ではレプリケーションアクションを作成し、last および get id コマンドを使用してレプリケーションアクション ID を取得します。そのあと別のアクションを選択し、last および get id コマンドを使用して、最後に実行したレプリケーションアクションの ID を取得します。

last を使用すると最後に使用したノードに戻ることができます。

hostname:configuration net interfaces> "igb4"
hostname:configuration net interfaces igb4> done
hostname:configuration net interfaces> last
hostname:configuration net interfaces igb4>

last コマンドは、動的ノードの作成中にアプライアンスによって自動的に設定された値を取得する場合にも便利です。たとえば、各レプリケーションアクションはその作成時にアプライアンスによって ID が割り当てられます。last コマンドを get id コマンドとともに使用すると、レプリケーションアクションの名前を使用せずに ID を取得できます。

hostname:shares p1/share replication> create
hostname:shares p1/share action (uncommitted)> set target=hostname
                               target = hostname (uncommitted)
hostname:shares p1/share action (uncommitted)> set pool=p0
                               pool = p0 (uncommitted)
hostname:shares p1/share action (uncommitted)> commit
hostname:shares p1/share replication> last get id
                               id = 7034367a-d4d8-e26f-fa93-c3b454e3b595
hostname:shares p1/share replication>

last コマンドが別のコマンドと組み合わされると (この場合 get id)、このコマンドは最後に使用したノードのコンテキストで実行されますが、現在のノードは変更されないままとなります。

last コマンドでは、最後に使用したノードおよびその値を、ノードの名前を指定せずに取得できるため、このコマンドは特にスクリプトで役立ちます。

script
         project = 'myproj';
         target = 'mytarget';
         target_pool = 'notmypool';

         run('cd /');
         run('shares select ' + project);
         run('replication');
         run('create');
         set('target', target);
         set('pool', target_pool);
         run('commit');
         run('last');
         id = get('id');
         printf("Sending update for replication action id %s ...", id);
         run('sendupdate');
         while (get('state') != 'idle') {
                printf(".");
                run('sleep 1');
         }
         printf("done\n");
 .

以前のコンテキストに戻るには、done コマンドを使用します。

hostname:configuration> done
hostname:>

次に示すように、これによって戻る以前のコンテキストは、必ずしも親コンテキストではありません。

hostname:> configuration users select bmc
hostname:configuration users bmc> done
hostname:>

done コマンドを複数回使用すると、以前のコンテキストに 1 つずつ戻ることができます。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> select bmc
hostname:configuration users bmc> done
hostname:configuration users> done
hostname:configuration> done
hostname:>

親コンテキストに移動するには、cd コマンドを使用します。従来の UNIX コマンドと同様に、親コンテキストへの移動を示すには、cd に「..」の引数を指定します。

hostname:> configuration users select bmc
hostname:configuration users bmc> cd ..
hostname:configuration users>

また、UNIX コマンドと同様に、「cd /」を指定するとルートコンテキストに移動します。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> select bmc
hostname:configuration users bmc> cd /
hostname:>

さらに、UNIX コマンドと同様に、「cd ../..」を使用すると親の親のコンテキストに移動できます。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> select bmc
hostname:configuration users bmc> cd ../..
hostname:configuration>

cd / コマンドや cd .. コマンドでは、バリエーションが限られています。汎用性を高めるには、top コマンドや up コマンドを使用します。

ルートコンテキストに移動するには、top コマンドを使用します。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> select bmc
hostname:configuration users bmc> top
hostname:>

ルートコンテキストに対して相対的に、指定されたコンテキストに直接移動するには、top コマンドに続けてコンテキスト名を使用します。たとえば、コンテキスト configuration users からコンテキスト configuration services に直接移動するには、コマンド top configuration services を使用します。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> top configuration services
hostname:configuration services>

top コマンドが特定のコンテキストと組み合わせて使用されるときに、done コマンドを使用すると、top コマンドが実行された前のコンテキストに戻ることができます。次の例では、最初の done コマンドで、以前のコンテキストに戻ります。2 つ目の done コマンドでは、top コマンドの前のコンテキストに戻ります。3 つ目の done コマンドでは、top コマンドの 2 ノード前のコンテキストに戻ります。

hostname:> maintenance system
hostname:maintenance system> updates
hostname:maintenance system updates> top configuration services
hostname:configuration services> ftp
hostname:configuration services ftp> done
hostname:configuration services> done
hostname:maintenance system updates> done
hostname:>

cd .. コマンドと同様に、up コマンドを使用すると、親コンテキストに移動できます。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> select bmc
hostname:configuration users bmc> up
hostname:configuration users>

また、up コマンドを n 回繰り返すと、現在のコンテキストから n ノード上のコンテキストに移動できます。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> select bmc
hostname:configuration users bmc> up up
hostname:configuration>

現在の親コンテキストに対して相対的に特定のコンテキストに移動するには、up コマンドのあとにコンテキスト名を入力します。同様に、現在の親の親のコンテキストに対して相対的に特定のコンテキストに戻るには、up up コマンドに続けてコンテキスト名を使用します。たとえば、コンテキスト configuration users bmc からコンテキスト configuration services に移動するには、コマンド up up services を使用します。

hostname:> configuration
hostname:configuration> users
hostname:configuration users> select bmc
hostname:configuration users bmc> up up services
hostname:configuration services>

up コマンドが特定のコンテキストと組み合わせて使用されるときに done コマンドを使用すると、up コマンドが実行された前のコンテキストに戻ることができます。次の例では、最初の done コマンドで、up コマンドの前のコンテキストに戻ります。2 つ目の done コマンドでは up コマンドの 2 ノード前のコンテキストに戻り、3 つ目の done コマンドでは up コマンドの 3 ノード前のコンテキストに戻ります。

hostname:> configuration
hostname:configuration> services
hostname:configuration services> ftp
hostname:configuration services ftp> up http
hostname:configuration services http> done
hostname:configuration services ftp> done
hostname:configuration services> done
hostname:configuration> done
hostname:>

コンテキスト名は、静的コンテキスト (通常のコマンド補完を介して) か動的コンテキスト (select コマンドのコマンド補完を介して) かにかかわらずタブ補完されます。次に示すのは、ルートコンテキストから bmc という名前のユーザーを、タブ補完を使用しない場合に必要になる 31 回ではなく、わずか 15 回のキーストロークで選択する例です。

hostname:> configtab
hostname:> configuration utab
hostname:> configuration users setab
hostname:> configuration users select tab
bmc   root
hostname:> configuration users select btab
hostname:> configuration users select bmcenter
hostname:configuration users bmc>

コンテキスト内では、コンテキスト固有のコマンドを実行します。たとえば、現在のユーザーのプリファレンスを取得するには、configuration preferences コンテキストから get コマンドを実行します。

hostname:configuration preferences> get
                       locale = C
                 login_screen = status/dashboard
              session_timeout = 15
           session_annotation = 
           advanced_analytics = false

コンテキストを変更するコマンドのあとに入力が存在する場合は、ターゲットのコンテキストでそのコマンドが実行されますが、制御は呼び出し側のコンテキストに戻ります。たとえば、コンテキストを変更せずにルートコンテキストからプリファレンスを取得するには、コンテキストナビゲーションコマンドに get コマンドを追加します。

hostname:> configuration preferences get
                       locale = C
                 login_screen = status/dashboard
              session_timeout = 15
           session_annotation = 
           advanced_analytics = false

システム内で新しいエンティティーを作成した場合は通常、新しいエンティティーに関連付けられたコンテキストが、コミットされていない状態で作成されます。たとえば、configuration alerts threshold コンテキストから create コマンドを実行することによってしきい値警告を作成します。

hostname:> configuration alerts thresholds create
hostname:configuration alerts threshold (uncommitted)>

プロンプト内の (uncommitted) は、これがコミットされていないコンテキストであることを示します。コミットされていないエンティティーは、commit コマンドを使用してコミットされます。コミットされていないコンテキストから移動しようとすると、確認を求めるプロンプトが表示されます。

hostname:configuration alerts threshold (uncommitted)> cd /
Leaving will abort creation of "threshold". Are you sure? (Y/N)

コミットされていないエンティティーをコミットするときは、新しいエンティティーに関連付けられたプロパティーが検証され、エンティティーを作成できない場合はエラーが生成されます。たとえば、新しいしきい値アラートの作成には統計名の指定が必要であり、この名前を設定できない場合はエラーが生成されます。

hostname:configuration alerts threshold (uncommitted)> commit
error: missing value for property "statname"

この問題を解決するには、エラーに対処してコミットを再試行します。

hostname:configuration alerts threshold (uncommitted)> set statname=cpu.utilization
                statname = cpu.utilization (uncommitted)
hostname:configuration alerts threshold (uncommitted)> commit
error: missing value for property "limit"
hostname:configuration alerts threshold (uncommitted)> set limit=90
                   limit = 90 (uncommitted)
hostname:configuration alerts threshold (uncommitted)> commit
hostname:configuration alerts thresholds> list
THRESHOLD          LIMIT       TYPE STATNAME
threshold-000         90     normal cpu.utilization

関連トピック