Go to main content

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

印刷ビューの終了

更新: 2021 年 8 月
 
 

get 関数の使用

run 関数は十分に強力であるため、システムに関する情報を取得するために、もっぱら出力の解析に頼りたくなることがあります。しかしこれには、将来変更されるかどうかわからない、人間が読める形式の出力をスクリプトが解析し続けるという決定的なデメリットがあります。システムに関する情報をより安定して収集するには、組み込みの get 関数を使用します。boot_time プロパティーの場合は、この関数によって文字列ではなく、ECMAScript の Date オブジェクトが返されるため、プログラムからプロパティー値を操作できます。より信頼できるスクリプト可能な値は、prop 関数の使用を参照してください。

  1. たとえば、boot_time プロパティーを現在の時間と組み合わせて使用して、ブート時からの時間を特定することもできます。
    script
           run('configuration version');
           now = new Date();
           uptime = (now.valueOf() - get('boot_time').valueOf()) / 1000;
           printf('up %d day%s, %d hour%s, %d minute%s, %d second%s\n',
               d = uptime / 86400, d < 1 || d >= 2 ? 's' : '',
               h = (uptime / 3600) % 24, h < 1 || h >= 2 ? 's': '',
               m = (uptime / 60) % 60, m < 1 || m >= 2 ? 's': '',
               s = uptime % 60, s < 1 || s >= 2 ? 's': '');
  2. 上のスクリプトを uptime.aksh として保存したとすると、それを次の方法で実行できます。
    $ ssh root@hostname < uptime.aksh
    Pseudo-terminal will not be allocated because stdin is not a terminal.
    Password:
    up 2 days, 10 hours, 47 minutes, 48 seconds

    仮想端末の割り当てに関するメッセージは、SSH クライアントによるものです。このメッセージが示す問題は、SSH に –T オプションを指定することによって管理できます。