上一主题: run-remote 命令-在远程系统上执行脚本 (Funclet)下一主题: run-SSHShell 命令-运行交互式 SSH 命令行 (Funclet)


run-SSHCommand 命令-通过 SSH 运行远程命令 (Funclet)

run-SSHCommand 在现有 SSH 会话内执行命令,或创建会话以便执行命令。 执行指定的命令之后销毁该会话。 虽然 AutoShell 使用 SSH 作为其主远程通信管道,但是该命令的远程节点不需要运行 AutoShell 客户端。 run-remote 命令更适用于在运行 AutoShell 客户端的远程节点上执行命令,因为该命令可返回有关命令执行方面的更多详细信息。

可以在任何运行 SSH 服务器的系统上执行命令。 可用命令及其选项取决于在远程节点上配置的 shell。

命令的语法如下:

run-SSHCommand [-host hostname] [-user username] [-pass password] [-key key phrase] 
[-prompt prompt] -command cmd [-port portnumber] [-session ssh]
-host hostname

SSH 服务器的名称。

-user username

(可选)指定用于登录到远程节点的用户名。 用户名是密码身份验证或公钥身份验证所必需的。 如果没有指定用户名,则使用在 AutoShell 登录过程中输入的用户名。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认值:$$User

-pass password

(可选)指定用于登录到远程节点的密码。 如果没有指定密码,则使用在 AutoShell 登录过程中输入的密码。 要在发出该命令之后输入隐藏的密码,请指定使用可选提示作为参数的 PW_GET()。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认值:$$Pass

-key key

(可选)指定包含 RSA 私钥的文件的绝对路径或相对路径,用于登录到远程节点。 如果指定了私钥和密码,AutoShell 将首先尝试公钥登录,如果失败,则尝试密码登录。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。 仅在使用公钥身份验证联机创建 SSH 会话时需要此参数。

默认:""

短语

指定私钥的密码。 如果未加密密钥,则不需要该密码。 要在发出该命令之后输入隐藏的密码,请指定使用可选提示作为参数的 PW_GET()。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认:""

-prompt prompt

(可选)指定 SSH 服务器显示的提示字符串结尾的固定部分,以指示其可用于输入(例如:用于 AutoShell 的“::->”)。 需要该信息以确定在 SSH 会话期间执行的命令的完成情况。 指定尽可能多的固定字符。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。

默认值:“::->”

-port portnumber

(可选)连接到目标系统的端口。

默认值:SSH 标准端口 22。

-cmd cmd

(可选)指定要在远程 Windows 系统上执行的命令。 未加引号的参数令牌会自动字符串化。 通过用括号括起表达式代码来阻止自动为表达式加引号。 仅在使用公钥身份验证联机创建 SSH 会话时需要此参数。

默认值:cmd

-session ssh

new-SSHSession 返回的 CASSHELL 对象。 在传递现有 SSH 会话对象时,run-SSHCommand 不需要创建 SSH 会话来执行指定的命令。 当执行多个命令时,仅执行一次会话协商和登录通常会提高多次会话分配后的性能。 如果指定该参数,则会忽略为 host、user、pass、key、phraseport 传递的值。 创建会话时已经指定该信息。

默认值:

示例

使用明确指定用户名和密码的 SSH 会话,在远程节点上运行目录列表:

s=run-SSHCommand -host srv14 -user bob -pass xyz42 -prompt :> -command ls

使用 AutoShell 登录所用的用户名和密码的 SSH 会话,在远程节点上运行目录列表:

s = run-SSHCommand -host srv14 -prompt ":>" -command "ls"

在明确分配的 SSH 会话中执行两个命令:

ssh=new-SSHSession -host client8 -user bob -pass xyz42 -prompt ::->
? run-SSHCommand -session ssh -command "! ver"
? run-SSHCommand -session ssh -command "ls *.* -l"
ssh.disconnect();

另请参阅:

new-SSHSession 命令-创建一个新的安全 SSH 会话 (Funclet)

run-remote 命令-在远程系统上执行脚本 (Funclet)