前のトピック: エンティティ命名規則次のトピック: ユーザ インターフェース リファレンス ガイド


CLI コマンドのスクリプティング

CA AppLogic® シェルから実行できるコマンドは、すべて ssh を使用してリモート クライアントからも実行できます。

すべての構文例において、controllerhost はアクセスされる CA AppLogic® コントローラのホスト名です。 クライアントで SSH エージェントがアクセス認証に必要な ID キーを提供するよう設定されているか、そうでない場合は有効なアクセス キーが SSH ユーティリティに提供される(たとえば、コマンド ライン オプションまたは設定ファイルによって)ことを前提としています。 どのような方法でアクセス オプションを提供する場合でも、クライアントは SSH2 秘密キー(RSA または DSA)しか使用しない可能性があり、コントローラへのアクセスを「root」として要求する必要があります。 対応する公開キーは、Web インターフェースを介して、またはコントローラへのシェル アクセス権のある別のユーザによって、コントローラにインストールされている必要があります。

シェルとして GNU bash を使用している場合は、シェル機能のセットを使用して、インタラクティブに、またはスクリプト内で、シェルから CLI コマンドに簡単にアクセスできます。 「クライアント側マクロ」を参照してください。

ssh root@controllerhost entity command [args]

コントローラ上で単一の 3t シェル コマンド(command)を実行します。

ssh root@controllerhost command entity [args]

上記と同じで、コマンドおよびエンティティ名が入れ替わっています。 どちらの構文の形式も 3t シェルに受け入れられます。

注:

スクリプトのみの CLI コマンド

高度なスクリプト向けのコマンド、およびクライアント側コードが含まれたインタラクティブ シェル インターフェースの実装向けのコマンドを以下に示します。 GNU bash シェル用に実装されたインターフェースの例については、「クライアント側マクロ」を参照してください。

アプライアンス シェル アクセス
ssh [-t] controllerhost sh [args] 

このコマンドは CLI インターフェースの ssh コマンドと同じ機能がありますが、上述のように直接呼び出しのみに使用され、インタラクティブ CA AppLogic® シェル プロンプトからはアクセスできません。 ターゲット アプライアンス上の擬似端子の自動設定が提供され、tty が必要なインタラクティブ コマンド(「vi」エディタなど)を透過的に使用できます。

「現在のアプリケーション」を使用したコマンドの呼び出し
ssh controllerhost =appname command [args] 

これは、上記の通常の非インタラクティブ コマンド呼び出しのバリエーションで、CA AppLogic® CLI コマンドの「現在のアプリケーション」を提供します。 インタラクティブ シェルから以下の 2 つのコマンドの実行するのと同等です。

ca appname 
command [args] 

「現在のアプリケーション」をサポートする各 CLI コマンドでもアプリケーション名を明示的に指定できますが、アプリケーション名を提供するこの代替方法は、「現在のアプリケーション」の概念が独自に定義され、リモートの CA AppLogic® コマンド呼び出し時に共通関数を併用するクライアント スクリプトに対して有用です。 このように、実際のリモート コマンド呼び出しを実行する関数で、コマンド構文や、特定のコマンドがアプリケーションを引数として取るかどうかを関知する必要がなくなります。コマンド内に最初の単語として現在のアプリケーション名を指定するだけで、後は CA AppLogic® リモート シェルに「現在のアプリケーション」を使用する独自のルールを適用させることができます。

以下の簡単な例(GNU bash)では、リモート コマンドを呼び出すために使用する「3t」という名前の関数を定義しています。

function 3t() { ssh $CONTROLLER =$APP "$@" ; } 

この関数を使用すると、コントローラ ホストと現在のアプリケーションを設定するだけで、ローカル シェルからプレフィックス 3t を付けてリモート コマンドを使用できます。以下はその例です。

CONTROLLER=ctl.3tera.net 
APP=TWiki 
3t grid info 
3t app list  # in this command, the current app name doesn't matter 
3t app start # here, the current application name will actually be used