commandPath MFT 属性

使用 commandPath 属性来指定 Managed File Transfer 可以从中运行命令的位置。 设置该属性时务必谨慎,因为能够向代理发送命令的远程客户机系统可以有效调用指定的某个 commandPath 中的任何命令。

您可以从 Managed File Transfer的受管传输和受管调用功能指定要在其中运行代理的系统上运行的命令。 请参阅 程序调用嵌套元素 以获取信息。 但是,命令必须位于 commandPath 代理程序属性所引用的路径上。

如果指定的命令不是标准命令,那么 Managed File Transfer 会尝试在命令路径上查找匹配的命令。 如果命令路径中存在多条匹配的命令,那么会使用第一条匹配的命令。

缺省情况下, commandPath 属性为空,因此代理程序无法调用任何命令。

指定 commandPath 代理属性,如下所示:
commandPath=command_directory_name 
separator...command_directory_name
[z/OS]或者仅针对 z/OS® ,指定:
commandPath=command_directory_name_or_data_set_name_prefix 
separator...command_directory_name_or_data_set_name_prefix
其中:
  • command_directory_name 表示可以运行命令的目录路径。
  • [z/OS]command_directory_name_or_data_set_name_prefix 是可以运行的命令的 z/OS UNIX System Services 目录路径,或者是以 // 开头的数据集名称前缀。 您可以选择使用标准或非标准的数据集名称前缀(即 //'HLQ...'//HLQ... 的形式)。 以 //'HLQ()...'//HLQ()... 形式指定分区数据集。 使用数据集只能指定 JCL 脚本命令。
  • separator 是特定于平台的分隔符。
[AIX][Linux]例如,在 AIX® and Linux® 系统上,如果要运行位于目录 /home/user/cmds1/home/user/cmds2中的命令,请按如下所示设置 commandPath 代理程序属性:
commandPath=/home/user/cmds1:/home/user/cmds2
括号,逗号 (,) 和反斜杠 (\) 是 MFT 命令中的特殊字符,必须使用反斜杠 (\) 字符进行转义。 [Windows]可在 Windows 上使用双反斜杠 (\\) 作为分隔符或使用单正斜杠 (/) 指定文件路径。
[Windows]例如,在 Windows 系统上,如果要运行位于目录 C:\File Transfer\commandsC:\File Transfer\agent commands中的命令,请按如下所示设置 commandPath 代理程序属性:
commandPath=C:\\File Transfer\\commands;C:\\File Transfer\\agent commands
[z/OS]例如,在 z/OS 上,如果要运行以下命令:
  • 位于 /home/user/cmds1/home/user/cmds2 目录下
  • 位于以 //'USER.CMD1', //CMD2, 开头的数据集中
  • 是名为 //'USER.CMDS' 的标准 PSD 的成员
请按照以下方式设置 commandPath 代理属性:
commandPath=/home/user/cmds1:/home/user/cmds2://'USER.CMD1'://CMD2://'USER.CMDS()'
重要信息: 设置此属性时必须非常小心,因为可以从能够将命令发送到代理程序的远程客户机系统调用其中一个指定 commandPaths 中的任何命令。 为此,缺省情况下,当您指定 commandPath 属性时,会配置沙箱,以便针对传输自动拒绝访问所有 commandPath 目录(及其子目录):
  • 如果代理配置为使用代理沙箱,那么在代理启动时会自动将 commandPath 目录添加到拒绝的目录列表。
  • 如果代理配置了一个或多个用户沙箱,那么在代理启动时会将 commandPath 目录作为 <exclude> 元素添加到每个用户沙箱的 <read><write> 元素。
  • 如果未将代理配置为使用代理沙箱或用户沙箱,那么在代理启动时会创建一个新的代理沙箱,其中将 commandPath 目录指定为拒绝的目录。
您可以通过向 agent.properties 文件添加以下属性来覆盖此行为:
addCommandPathToSandbox=false
如果 addCommandPathToSandbox 属性存在且设置为 false,那么会发生以下行为:
  • 如果代理配置为使用代理沙箱并且沙箱未指定任何允许的目录,那么在代理启动时会自动将 commandPath 目录添加到拒绝的目录列表。
  • 如果将代理配置为使用代理沙箱并且沙箱已指定一个或多个允许的目录,那么在代理启动时不会将 commandPath 目录添加到拒绝的目录列表。
  • 如果代理配置了一个或多个用户沙箱,那么用户沙箱不会发生更改,并且不会将 commandPath 目录作为 <exclude> 元素添加到每个用户沙箱的 <read><write> 元素。
  • 如果未将代理配置为使用代理沙箱或用户沙箱,那么在代理启动时会创建一个新的代理沙箱,其中将 commandPath 目录指定为拒绝的目录。