付録 E |
この付録には、Sun Secure Global Desktop (SGD) ログインスクリプトに関する参照情報が記載されています。この情報を使用して、標準の SGD ログインスクリプトをカスタマイズしたり、ユーザー独自のログインスクリプトを作成したりできます。
SGD で提供するログインスクリプトはすべて /opt/tarantella/var/serverresources/expect ディレクトリに格納されています。
SGD のログインスクリプトは、Tcl (version 8.4) と Expect (version 5.43) で作成されています。Expect は Tcl を拡張し、プログラムと対話するための追加のコマンドを提供します。
Tcl の詳細については、「Tcl Developer Exchange」を参照してください。
Expect の詳細については、「The Expect Home Page」を参照してください。
ログインスクリプトは、アプリケーションの設定時に使用できるスクリプトと、共通のコードを含むスクリプトに分類できます。使用可能なスクリプトについては、次の節を参照してください。
アプリケーションに使用されるログインスクリプトは、次のように設定します。
Administration Console で、アプリケーションオブジェクトの「起動」タブにある「ログインスクリプト」属性を使用します。
コマンド行で、tarantella object コマンドに --login script コマンドオプションを使用します。
次の表に、SGD で提供されるものの中でアプリケーションオブジェクトの「ログインスクリプト」属性として設定できるログインスクリプトと、それらの使用目的を示します。
スクリプト名 | 説明 |
---|---|
unix.exp | 文字型アプリケーションと X アプリケーション用の標準ログインスクリプト。 |
securid.exp | アプリケーションサーバーの認証用 SecurID を使っている場合、unix.exp をこれで置き換えます。
RSA SecurID を使用したアプリケーション認証を参照してください。 |
windows.exp | Windows アプリケーション用の標準ログインスクリプト。 |
3270.exp | 3270 アプリケーション用の標準ログインスクリプト。 |
5250.exp | 5250 アプリケーション用の標準ログインスクリプト。 |
vms.exp | 仮想メモリーシステム (VMS) アプリケーションサーバー上で実行されている
X アプリケーションまたは文字型アプリケーションで使用されます。
rexec を除くすべてのアプリケーションの接続方法で使用できます。 VMS アプリケーションの設定を参照してください。 |
vmsrexec.exp | VMS アプリケーションサーバー上で実行されている X アプリケーションまたは文字型アプリケーションで使用されます。
アプリケーション接続方法が rexec の場合にのみ使用できます。 VMS アプリケーションの設定を参照してください。 |
unixclass.exp | シャドウィング可能な UNIX セッションの作成に使用されるスクリプト。仮想教室の状況で使用されます。
仮想教室の作成を参照してください。 |
winclass.exp | シャドウィング可能な Windows セッションの作成に使用されるスクリプト。仮想教室の状況で使用されます。
仮想教室の作成を参照してください。 |
pupil.exp | 仮想教室の状況で講師をシャドウィングする際に受講者によって使用されるスクリプト。
仮想教室の作成を参照してください。 |
次の表に、SGD で提供されるものの中で共通のコードを含むログインスクリプトと、それらの使用目的を示します。これらのスクリプトは、アプリケーションオブジェクトの「ログインスクリプト」属性としては設定できません。
SGD に付属しているログインスクリプトは、いくつかの Tcl コマンドおよびプロシージャーを使用してアプリケーションサーバーとの通信を行います。
「Tcl コマンド」は、SGD の実行プロトコルエンジンコンポーネントで定義されるコマンドです。これらのコマンドは、アプリケーションサーバーへの接続や SGD アプリケーション認証ダイアログおよび進行状況ダイアログの表示を制御するために、ユーザー独自のログインスクリプトで使用できます。
「TCL プロシージャー」は、ログインスクリプトのみで定義されます。これらのプロシージャーは、SGD アプリケーション認証ダイアログをより細かく制御するために使用できます。
次の Tcl コマンドおよびプロシージャーは、アプリケーションが起動されたときの SGD アプリケーション認証ダイアログの表示を制御するために使用されます。
authrequest [ -normal | -changed ] -showuser 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 | カスタマイズされた認証ダイアログを使用するかどうかを指定します。 |
次の例では、パスワードが正しくないことを示すダイアログボックスを表示します。
authrequest -normal |
ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。
この Tcl プロシージャーは、次のオプションを使用して authrequest コマンドを呼び出します。
authenticate [ -normal | -changed ] |
ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。ダイアログにユーザー独自のタイトルを使用したり、ユーザー独自のメッセージを表示したりできます。また、ユーザー名およびパスワードフィールドを表示するかどうかを制御することもできます。
この Tcl プロシージャーは、次の引数を使用して authrequest コマンドを呼び出します。
authenticate2 [ -normal | -changed ] -showuser 0|1 -showpasswd 0| -title title -message message |
ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。認証ダイアログを完全にカスタマイズできます。
このプロシージャーでは、実行プロトコルエンジンはユーザーがユーザー名フィールドに入力したテキストを確認しません。アプリケーションの接続方法として Secure Shell (SSH) が使用されており、ユーザーがユーザー名を変更した場合、実行プロトコルエンジンは接続を中断しないで、新しいユーザー名として再接続します。これにより、アプリケーションの起動が失敗する場合があります。SSH を使用しており、ユーザーがユーザー名を変更できるようにする場合は、代わりに userauthenticate プロシージャーを使用してください。
この Tcl プロシージャーは、次の引数を使用して authrequest コマンドを呼び出します。
customauthenticate [ -normal | -changed ] -showuser 0|1 -title title -message message -customuserlabel 0|1 -userlabel label -custompasswdlabel 0|1 -passwdlabel label -showpasscache 0|1 -showsmartcard 0|1 |
ユーザー名とパスワードに関する問題点を示すダイアログボックスを表示します。認証ダイアログを完全にカスタマイズできます。
このプロシージャーは、ユーザーによってユーザー名が変更されたかどうかを確認する点を除き、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 |
次の Tcl コマンドは、アプリケーションが起動されたときの SGD 進行状況ダイアログの表示を制御するために使用されます。
loaderror error |
この Tcl コマンドを使用すると、ログインスクリプトから返されたエラーメッセージを上書きできます。この関数を使用すると、たとえば、ログインスクリプトの標準のエラーメッセージをユーザー独自のメッセージに置き換えることができます。アプリケーションの起動に失敗した場合、エラーは進行状況ダイアログとログファイルに表示されます。ログインスクリプトのエラーメッセージを参照してください。
clienttimer [ time ] [ message ] [ timers ] |
この Tcl コマンドは、指定された time の間、message を進行状況ダイアログボックスに表示します。進行状況バーには、合計の timers セクションがあります。例を次に示します。
clienttimer 10 "Launching the application" 4 |
次の Tcl コマンドは、アプリケーションサーバーへの接続を制御するために使用されます。
setbuffer [ -buffer num ] [ -output 0|1 ] |
この Tcl コマンドは、アプリケーションサーバーから読み込むバイト数を定義します。
引数 | 説明 |
---|---|
-buffer num | バイト数を指定します。デフォルト値は 1 です。 |
-output 0|1 | 出力をオン (1) またはオフ (0) にします。デフォルト値は 1 です。 |
setbuffer -buffer 1000 |
locallaunch [ -start ] [ -abort ] [ -user launchspec -root launchspec ] |
この Tcl コマンドは、アプリケーションサーバーが SGD サーバーも兼ねている場合に、アプリケーションを起動します。これは「最適化起動」と呼ばれます。
locallaunch -abort |
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 |
SGD のログインスクリプトは、多くの変数を使用します。変数は、常に使用可能な保証されている変数と、値を持つ場合にのみ使用可能なオプション変数に分類できます。
ログインスクリプトで変数を使用するには、その変数が runsubscript.exp ログインスクリプトで定義されている必要があります。
次の節では、保証されている変数とオプション変数、およびそれらの使用目的について説明します。
保証されている変数は、実行するコマンドの名前、ログイン先のアプリケーションサーバー、および使用する接続方法を格納します。
すべてのログインスクリプトは、少なくともいくつかの保証されている変数を使用します。
保証されている変数は常に存在しますが、NULL 値を持つ場合があります。
次に示す保証されている変数も、runsubscript.exp で定義されます。これらの変数は、アプリケーションの起動時に SGD サーバーで使用されます。
オプション変数は、アプリケーション、ユーザー、およびユーザーのセッションに関する追加情報を格納します。
オプション変数は一般に、条件をテストし、テスト結果に基づいてログインスクリプトの動作を変更します。オプション変数は、値を持っている場合にのみ存在します。たとえば、TTA_ResumeTimeOut 変数は、アプリケーションオブジェクトの「アプリケーションの再開機能」属性が値を持っている場合にのみ存在します。
ほとんどのオプション変数は、オブジェクト属性の値を格納します。起動するアプリケーションには、オプション変数として使用可能になっているアプリケーションオブジェクトの属性があります。同様に、ユーザープロファイルの属性も同じ方法で使用可能になります。ほかのオプション変数は、ユーザーのセッションに関する追加情報を格納します。
SGD では、アプリケーションの起動時にいくつかのタイムアウト時間が使用されます。次のタイムアウト時間が用意されています。
注 - 実行プロトコルエンジンのタイムアウト時間を除き、タイムアウト時間はどれも、Microsoft RDP プロトコルを使用するように設定された Microsoft Windows アプリケーションの起動時には適用されません。 |
Expect のタイムアウト時間は vars.exp ログインスクリプトで定義されます。次の表に、使用可能な Expect のタイムアウト時間とそのデフォルト値を示します。
タイムアウト | デフォルト値 |
---|---|
timeouts(hostprobe) | 30 秒 |
timeouts(prelogin) | 40 秒 |
timeouts(loggedin) | 20 秒 |
Expect スクリプトのタイムアウト時間を超過すると、スクリプトはプロンプトの推測を試みてアプリケーションの起動処理を継続します。
timeouts(hostprobe) タイムアウトは、unix.exp ログインスクリプトから呼び出されます。これは ttahostprobe バイナリからの応答を待つ時間です。ttahostprobe バイナリは、アプリケーションサーバーが使用可能かどうかを確認するために使用されます。
ttahostprobe バイナリは応答を標準出力 (stdout) に出力し、成功の場合は y を、失敗の場合は n を返します。
ログインフェーズで、必要な文字列の照合のため、各 Expect コマンドに対して許可される時間。
たとえば、アプリケーションサーバーとの接続の確立後、スクリプトがログインプロンプトの照合に使用できる時間は、デフォルトで 40 秒です。これが経過するとタイムアウトとなります。照合が成功するたびに、タイマーはリセットされます。ログイン中、タイムアウト時間は通常、ログインプロンプト、パスワードプロンプト、およびシェルプロンプトの処理ごとにリセットされます。
このタイムアウト時間を増やすと、ログインの各フェーズに許可される時間も増えます。このタイムアウト時間は、ログインの最長のフェーズを完了できるように、十分に大きな値に設定する必要があります。
このタイムアウト時間を超過すると、スクリプトは「ログイン状態にあり、シェルプロンプトの照合に失敗した」と判断し、アプリケーションサーバーに "echo SYNC" を送信してプロンプト文字列を推測します。タイマー時間を超過したときにユーザーがログインしていないと、アプリケーションの起動に失敗します。そうでない場合は、"echo SYNC" の直後にアプリケーションサーバーが送信した値がシェルプロンプトに設定され、起動処理が引き続き実行されます。
注 - "echo SYNC" が表示され、シェルプロンプトが $、%、#、または > で正常に終了する場合は、timeouts(prelogin) 値が短すぎます。 |
クライアントタイマーは、clienttimerTcl コマンドを使って設定します (clienttimerを参照)。クライアントタイマーの時間を超過すると、致命的な ErrApplicationServerTimeout エラーでアプリケーション起動が取り消されます。
クライアントタイマーは vars.exp ログインスクリプトで定義されます。
次の表に、使用可能なクライアントタイマーとそのデフォルト値を示します。
タイマー | デフォルト値 |
---|---|
timers(login) | timeouts(prelogin) + 10 秒 |
timers(env) | 40 秒 |
timers(runmain) | 40 秒 |
timers(build) | 25 秒 |
timers(total) | 5 秒 |
ログインフェーズが完了するまで (接続の確立から最初のシェルプロンプトの受信まで) の総時間。
この timers(login) タイマーは、すべてのログインフェーズをカバーできるだけの十分な長さでなければなりません。ログインの各フェーズ (ログインプロンプト、パスワードプロンプト、シェルプロンプト) は、最大で、timeouts(prelogin) タイムアウトに対して定義された秒数だけ継続する可能性があります。このタイマーの値は、常に Expect のタイムアウト時間 timeouts(prelogin) より大きくなければなりません。
Expect のタイムアウト時間 timeouts(prelogin) を増やす場合は、timers(login) タイマーも増やして、その差を 10 以上に保つようにしてください。
実行対象のコマンド行の作成にかかる総時間。このタイマーは、SCO Merge プロトコルを使用している Windows アプリケーションを起動する場合にのみ使用されます。
注 - SCO Merge プロトコルのサポートは終了しており、従来の SGD Windows アプリケーションオブジェクトでのみ使用できます。 |
procs.exp ログインスクリプトには、コマンドの発行時の 3 秒のタイムアウト時間が含まれています。これは proc wait_for_prompt プロシージャーで定義されます。
実行プロトコルエンジンのデフォルトのタイムアウト時間は 180 秒 (3 分) です。このタイムアウト時間は、アプリケーションの起動要求を受信したときに起動され、アプリケーションの起動処理が正常終了すると削除されます。このタイムアウト時間を超過すると、アプリケーションの起動処理が取り消されます。このタイムアウト時間は、各 SGD サーバーに固有の値です。
このタイムアウト時間を変更するには、次のコマンドを使用します。
$ tarantella config edit \ --tarantella-config-execpeconfig-maxlaunchtime secs |
注 - このタイムアウト時間をアレイ内のすべての SGD サーバーについて変更するには、このコマンドで --array オプションを使用します。 |
次の表で、ログインスクリプトで発生する可能性のあるエラーコードとエラーメッセージ、およびそれに対する処置について説明します。これらの情報を使用して、ログインスクリプトが失敗する原因を診断してください。
Copyright © 2008, Sun Microsystems, Inc. All rights reserved