随 SGD 提供的登录脚本使用多个 Tcl 命令和过程与应用服务器进行通信。
Tcl 命令是在 SGD 的执行协议引擎组件中定义的命令。这些命令可以用在您自己的登录脚本中,用于控制与应用服务器的连接以及 SGD "Application Authentication"(应用程序验证)和 "Progress"(进度)对话框的显示方式。
Tcl 过程只在登录脚本中定义。这些过程可用于提供对 SGD "Application Authentication"(应用程序验证)对话框的更多控制。
以下 Tcl 命令和过程用于在启动应用程序时控制 SGD "Application Authentication"(应用程序验证)对话框的显示方式:
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 过程并提供所需的参数来调用此命令。
此命令有以下参数。
参数 | 描述 |
---|---|
| 指明密码不正确。 |
| 指明密码已过期。 |
| 指定显示用户名字段。 |
| 指定显示密码字段。 |
| 指定验证对话框所使用的标题。 |
| 指定验证对话框中所显示的消息。 |
| 指定是否为用户名字段使用定制标签。 |
| 指定用户名字段要使用的定制标签。 |
| 指定是否为密码字段使用定制标签。 |
| 指定密码字段要使用的定制标签。 |
| 指定是否显示 "Save This Password"(保存此密码)复选框。 |
| 指定是否显示智能卡选项。 |
| 指定是否使用定制的验证对话框。 指定以下选项之一:
|
以下示例显示一个对话框,指明密码不正确。
authrequest -normal
显示一个对话框,指明用户名或密码问题。
此 Tcl 过程使用以下选项调用 authrequest 命令。
authenticate [ -normal | -changed ]
以下示例显示一个对话框,指明密码不正确。
authenticate "-normal"
显示一个对话框,指明用户名或密码问题。您可以使用自己定义的对话框标题并显示自己定义的消息。还可以控制是否显示用户名和密码字段。
此 Tcl 过程使用以下参数调用 authrequest 命令。
authenticate2 [ -normal | -changed ] -showuser 0|1 -showpasswd 0|1 -titletitle
-messagemessage
以下示例显示一个指明密码已过期的对话框,并显示用户名和密码字段。
authenticate2 "-changed" "1" "1" "" ""
显示一个对话框,指明用户名或密码问题。您可以全面定制验证对话框。
在此过程中,执行协议引擎不检查用户在用户名字段中键入的文本。如果使用安全 Shell (Secure Shell, SSH) 作为应用程序的连接方法,并且用户更改了用户名,则执行协议引擎不会中断连接并以新用户名重新连接。这将导致应用程序无法启动。因此,如果使用了 SSH 并允许用户更改其用户名,请改为使用 userauthenticate 过程。
此 Tcl 过程使用以下参数调用 authrequest 命令。
customauthenticate [ -normal | -changed ] -showuser 0|1 -showpasswd 0|1 -titletitle
-messagemessage
-customuserlabel 0|1 -userlabellabel
-custompasswdlabel 0|1 -passwdlabellabel
-showpasscache 0|1 -showsmartcard 0|1
以下示例显示一个密码字段使用定制标签的对话框。
customauthenticate "-normal" "0" "1" "" "" "0" "" "1" "Enter your password:" "0" "0"
显示一个对话框,指明用户名或密码问题。您可以全面定制验证对话框。
除了要检查用户是否已更改其用户名之外,此过程与 customauthenticate 相同。如果用户名已更改,执行协议引擎将会中断与应用服务器的连接并以更改后的用户身份重新连接。
此 Tcl 过程使用以下参数调用 authrequest
命令:
userauthenticate [ -normal | -changed ] -showuser 0|1 -showpasswd 0|1 -titletitle
-messagemessage
-customuserlabel 0|1 -userlabellabel
-custompasswdlabel 0|1 -passwdlabellabel
-showpasscache 0|1 -showsmartcard 0|1
以下示例在检查用户名是否更改之后,显示一个密码字段使用定制标签的对话框。
userauthenticate "-normal" "0" "1" "" "" "0" "" "1" "Enter your password:" "0" "0"
以下 Tcl 命令用于在启动应用程序时控制 SGD "Progress"(进度)对话框的显示方式:
loaderror error
您可以使用此 Tcl 命令覆盖登录脚本所返回的错误消息。例如,可以使用此功能将标准登录脚本的错误消息替换为您自己定义的消息。如果应用程序无法启动,将在进度对话框和日志文件中显示错误。请参见第 E.5 节 “登录脚本错误消息”。
clienttimer [time
] [message
] [timers
]
此 Tcl 命令会在指定的 time
(时间)内在进度对话框中显示 message
(消息)。进度指示条上有 timers
(计时器)部分,显示所有计时器。以下是一个示例。
clienttimer 10 "Launching the application" 4
canceltimer
此 Tcl 命令用于取消 clienttimer 命令。此命令没有参数。
progress [ message
]
此 Tcl 命令在进度对话框中显示 message
(消息)。以下是一个示例。
progress "Initializing..."
以下 Tcl 命令用于控制与应用服务器的连接:
setbuffer [ -buffer
num
] [ -output
0|1 ]
此 Tcl 命令定义要从应用服务器读取的字节数。
参数 | 描述 |
---|---|
| 指定字节数。默认值为 1。 |
| 打开 (1) 或关闭 (0) 输出。默认值为 1。 |
以下是一个示例。
setbuffer -buffer 1000
locallaunch [ -start
] [ -abort
] [ -user
launchspec
-root
launchspec
]
当应用服务器同时也是 SGD 服务器时,可使用此 Tcl 命令启动应用程序。这称为优化启动。
参数 | 描述 |
---|---|
| 启动优化启动。 |
| 停止优化启动并恢复为标准连接方法。 |
| 定义当用户不是 UNIX 或 Linux 平台的 root 用户时,用于启动 SGD 服务器上的应用程序的连接方法。 可以为启动后分离的应用程序(后台应用程序)以及不分离的应用程序(前台应用程序)指定不同的行为。
默认值为 |
| 定义当用户是 UNIX 或 Linux 平台的 root 用户时,用于启动 SGD 服务器上的应用程序的连接方法。 可以为启动后分离的应用程序(后台应用程序)以及不分离的应用程序(前台应用程序)指定不同的行为。
默认值为 |
以下是一个示例。
locallaunch -abort
tarantella -nosocket
-portnumber
num
-thirdtiershell
shell
此 Tcl 命令用于配置与应用服务器的连接。在使用 sgdconnect 命令前,必须配置连接。
参数 | 描述 |
---|---|
| 指定应用程序将要通过其他某种方法启动,并且必须由创建脚本的人实现,例如,通过使用 Expect 的 spawn 命令。这仅适用于不需要永久连接的应用程序,例如 X 应用程序。如果您有一个特殊的应用服务器,或者您需要与现有的应用程序启动机制进行集成,则此命令非常有用。 |
| 覆盖用于与应用服务器建立连接的端口。如果使用此选项,必须在执行 sgdconnect 命令前执行 tarantella 命令,否则将忽略端口号。 |
| 指定应用服务器上要使用的 shell,例如 /bin/sh。 |
以下示例通过 TCP 端口 5999 连接到应用服务器。
tarantella -portnumber 5999
sgdconnect
指示使用执行协议引擎连接到应用服务器。此命令没有参数。
大多数 SGD 登录脚本使用 sgdconnect 建立连接。如果您要自己处理与应用服务器的连接,必须确保脚本中未使用此命令。
wcpwts.exp
标准登录脚本是一个不使用此命令连接到应用服务器的登录脚本例子。