E.2. ログインスクリプトの Tcl コマンドおよびプロシージャー

SGD に付属しているログインスクリプトは、いくつかの Tcl コマンドおよびプロシージャーを使用してアプリケーションサーバーとの通信を行います。

Tcl コマンドは、SGD の実行プロトコルエンジンコンポーネントで定義されるコマンドです。これらのコマンドは、アプリケーションサーバーへの接続や SGD アプリケーション認証ダイアログおよび進行状況ダイアログの表示を制御するために、ユーザー独自のログインスクリプトで使用できます。

TCL プロシージャーは、ログインスクリプトのみで定義されます。これらのプロシージャーは、SGD アプリケーション認証ダイアログをより細かく制御するために使用できます。

E.2.1. SGD アプリケーション認証ダイアログの制御

次の Tcl コマンドおよびプロシージャーは、アプリケーションが起動されたときの SGD アプリケーション認証ダイアログの表示を制御するために使用されます。

authrequest

authrequest
 [ -normal | -changed ]
   -showuser 0|1
   -showpasswd 0|1
   -title title
   -message message
   -customuserlabel 0|1
   -userlabel label
   -custompasswdlabel 0|1
   -passwdlabel label
   -showpasscache 0|1
   -showsmartcard 0|1
   -isuserdialog 0|1|2

この Tcl コマンドは、ユーザー名またはパスワードに関する問題を示すダイアログボックスを表示します。

一般に、authrequest コマンドをログインスクリプトから直接呼び出すことはありません。代わりに、定義済みの Tcl プロシージャーを使用して、このコマンドを必要な引数とともに呼び出します。

このコマンドには次の引数があります。

引数

説明

-normal

パスワードが正しくないことを指定します。

-changed

パスワードの有効期限が切れていることを指定します。

-showuser

ユーザー名フィールドを表示することを指定します。

-showpasswd

パスワードが正しくないことを指定します。

-title

認証ダイアログに使用されるタイトルを指定します。

-message

認証ダイアログに表示されるメッセージを指定します。

-customuserlabel

ユーザー名フィールドにカスタマイズされたラベルを使用するかどうかを指定します。

-userlabel

ユーザー名フィールドに使用するカスタマイズされたラベルを指定します。

-custompasswdlabel

パスワードフィールドにカスタマイズされたラベルを使用するかどうかを指定します。

-passwdlabel

パスワードフィールドに使用するカスタマイズされたラベルを指定します。

-showpasscache

「このパスワードを保存する」チェックボックスを表示するかどうかを指定します。

-showsmartcard

スマートカードオプションを表示するかどうかを指定します。

-isuserdialog 0|1|2

カスタマイズされた認証ダイアログを使用するかどうかを指定します。

次のいずれかを指定します。

  • 0 - ユーザー名が変更されたかどうかを確認しません

  • 1 - ユーザー名が変更されたかどうかを確認し、必要に応じてアプリケーションサーバーに再接続します

  • 2 - ユーザー名が変更された場合に SGD のデフォルトの動作を使用します

次の例では、パスワードが正しくないことを示すダイアログボックスを表示します。

authrequest -normal

authenticate

ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。

この Tcl プロシージャーは、次のオプションを使用して authrequest コマンドを呼び出します。

authenticate [ -normal | -changed ]

次の例では、パスワードが正しくないことを示すダイアログボックスを表示します。

authenticate "-normal"

authenticate2

ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。ダイアログにユーザー独自のタイトルを使用したり、ユーザー独自のメッセージを表示したりできます。また、ユーザー名およびパスワードフィールドを表示するかどうかを制御することもできます。

この Tcl プロシージャーは、次の引数を使用して authrequest コマンドを呼び出します。

authenticate2
 [ -normal | -changed ]
   -showuser 0|1
   -showpasswd 0|1
   -title title
   -message message

次の例では、パスワードの有効期限が切れていることを示すダイアログボックスを表示します。ユーザー名およびパスワードフィールドが表示されます。

authenticate2 "-changed" "1" "1" "" ""

customauthenticate

ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。認証ダイアログを完全にカスタマイズできます。

このプロシージャーでは、実行プロトコルエンジンはユーザーがユーザー名フィールドに入力したテキストを確認しません。アプリケーションの接続方法として Secure Shell (SSH) が使用されており、ユーザーがユーザー名を変更した場合、実行プロトコルエンジンは接続を中断しないで、新しいユーザー名として再接続します。これにより、アプリケーションの起動が失敗する場合があります。SSH を使用しており、ユーザーがユーザー名を変更できるようにする場合は、代わりに userauthenticate プロシージャーを使用してください。

この Tcl プロシージャーは、次の引数を使用して authrequest コマンドを呼び出します。

customauthenticate
 [ -normal | -changed ]
   -showuser 0|1
   -showpasswd 0|1
   -title title
   -message message
   -customuserlabel 0|1
   -userlabel label
   -custompasswdlabel 0|1
   -passwdlabel label
   -showpasscache 0|1
   -showsmartcard 0|1

次の例では、パスワードフィールド用にカスタマイズされたラベルが付いたダイアログボックスを表示します。

customauthenticate "-normal" "0" "1" "" "" "0" "" "1" "Enter your password:" "0" "0"

userauthenticate

ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。認証ダイアログを完全にカスタマイズできます。

このプロシージャーは、ユーザーによってユーザー名が変更されたかどうかを確認する点を除き、customauthenticate と同じです。ユーザー名が変更されている場合、実行プロトコルエンジンはアプリケーションサーバーへの接続を中断し、変更されたユーザーとして再接続します。

この Tcl プロシージャーは、次の引数を使用して authrequest コマンドを呼び出します。

userauthenticate
 [ -normal | -changed ]
   -showuser 0|1
   -showpasswd 0|1
   -title title
   -message message
   -customuserlabel 0|1
   -userlabel label
   -custompasswdlabel 0|1
   -passwdlabel label
   -showpasscache 0|1
   -showsmartcard 0|1

次の例では、ユーザー名の変更をチェックしたあとの、パスワードフィールド用にカスタマイズされたラベルが付いたダイアログボックスを表示します。

userauthenticate "-normal" "0" "1" "" "" "0" "" "1" "Enter your password:" "0" "0"

E.2.2. SGD 進行状況ダイアログの制御

次の Tcl コマンドは、アプリケーションが起動されたときの SGD 進行状況ダイアログの表示を制御するために使用されます。

loaderror

loaderror error

この Tcl コマンドを使用すると、ログインスクリプトから返されたエラーメッセージを上書きできます。この関数を使用すると、たとえば、ログインスクリプトの標準のエラーメッセージをユーザー独自のメッセージに置き換えることができます。アプリケーションの起動に失敗した場合、エラーは進行状況ダイアログとログファイルに表示されます。「ログインスクリプトのエラーメッセージ」を参照してください。

clienttimer

clienttimer [ time ] [ message ] [ timers ]

この Tcl コマンドは、指定された time の間、message を進行状況ダイアログボックスに表示します。進行状況バーには、合計の timers セクションがあります。例を次に示します。

clienttimer 10 "Launching the application" 4

canceltimer

canceltimer

この Tcl コマンドは、clienttimer コマンドを取り消します。このコマンドには引数がありません。

progress

progress [ message ]

この Tcl コマンドは、message を進行状況ダイアログボックスに表示します。例を次に示します。

progress "Initializing..."

E.2.3. アプリケーションサーバーへの接続の制御

次の Tcl コマンドは、アプリケーションサーバーへの接続を制御するために使用されます。

setbuffer

setbuffer [ -buffer num ] [ -output 0|1 ]

この Tcl コマンドは、アプリケーションサーバーから読み込むバイト数を定義します。

引数

説明

-buffer num

バイト数を指定します。デフォルト値は 1 です。

-output 0|1

出力をオン (1) またはオフ (0) にします。デフォルト値は 1 です。

例を次に示します。

setbuffer -buffer 1000

locallaunch

locallaunch [ -start ] [ -abort ] [ -user launchspec -root launchspec ]

この Tcl コマンドは、アプリケーションサーバーが SGD サーバーも兼ねている場合に、アプリケーションを起動します。これは最適化起動と呼ばれます。

引数

説明

-start

最適化起動で起動します。

-abort

最適化起動を停止し、標準の接続方法に戻ります。

-user launchspec

ユーザーが UNIX または Linux プラットフォームの root ユーザーでない場合に、SGD サーバー上でアプリケーションを起動するのに使う接続方法を定義します。

起動がデタッチされているアプリケーション (バックグラウンドアプリケーション) と起動がデタッチされていないアプリケーション (フォアグラウンドアプリケーション) に、別の動作を指定できます。

launchspec には、次のいずれかを指定できます。

  • 0 - すべてのアプリケーションを、アプリケーションオブジェクトに定義されている接続方法を使って起動します

  • 1 - バックグラウンドアプリケーションは /bin/su を使用します。フォアグラウンドアプリケーションは、アプリケーションオブジェクトの接続方法を使用します

  • 2 - バックグラウンドアプリケーションは、アプリケーションオブジェクトの接続方法を使用します。フォアグラウンドアプリケーションは /bin/su を使用します。

  • 3 - すべてのアプリケーションを /bin/su を使って起動します

デフォルトは 1 です。

-root launchspec

ユーザーが UNIX または Linux プラットフォームの root ユーザーである場合に、SGD サーバー上でアプリケーションを起動するのに使う接続方法を定義します。

起動がデタッチされているアプリケーション (バックグラウンドアプリケーション) と起動がデタッチされていないアプリケーション (フォアグラウンドアプリケーション) に、別の動作を指定できます。

launchspec には、次のいずれかを指定できます。

  • 0 - すべてのアプリケーションを、アプリケーションオブジェクトに定義されている接続方法を使って起動します

  • 1 - バックグラウンドアプリケーションは /bin/su を使用します。フォアグラウンドアプリケーションは、アプリケーションオブジェクトの接続方法を使用します

  • 2 - バックグラウンドアプリケーションは、アプリケーションオブジェクトの接続方法を使用します。フォアグラウンドアプリケーションは /bin/su を使用します。

  • 3 - すべてのアプリケーションを /bin/su を使って起動します

  • 4 - すべてのアプリケーションを、アプリケーションオブジェクトに定義されている接続方法を使って起動します

デフォルト値は 3 です。

例を次に示します。

locallaunch -abort

tarantella

tarantella -nosocket -portnumber num -thirdtiershell shell

この Tcl コマンドは、アプリケーションサーバーへの接続を設定するために使用されます。sgdconnect コマンドを使用する前に、接続を構成する必要があります。

引数

説明

-nosocket

アプリケーションの起動に他の方法を使用することを指定します。起動方法の実装は、スクリプト作成者が行う必要があります。たとえば、Expect の spawn コマンドを使用します。これを行なえるのは、X アプリケーションなど、永続的な接続を必要としないアプリケーションの場合だけです。このコマンドが役立つのは、特殊なアプリケーションサーバーを扱う場合や、既存のアプリケーション起動メカニズムと統合化する必要がある場合です。

-portnumber num

アプリケーションサーバーへの接続に使用されるポートを上書きします。このオプションを使用する場合は、sgdconnect コマンドの前に tarantella コマンドを実行する必要があります。そうしないと、ポート番号が無視されます。

-thirdtiershell shell

アプリケーションサーバーで使用するシェルを指定します (たとえば、/bin/sh)。

次の例は、TCP ポート 5999 上でアプリケーションサーバーに接続します。

tarantella -portnumber 5999

sgdconnect

sgdconnect

実行プロトコルエンジンに、アプリケーションサーバーに接続するよう指示します。このコマンドには引数がありません。

ほとんどの SGD ログインスクリプトは、sgdconnect を使用して接続を確立します。アプリケーションサーバーへの接続を自分で処理する場合は、スクリプトでこのコマンドが使用されないようにする必要があります。

wcpwts.exp 標準ログインスクリプトは、アプリケーションサーバーへの接続にこのコマンドを使用しないログインスクリプトの例です。