前のトピック: run-remote コマンド -- リモート システム上でスクリプトを実行(Funclet)次のトピック: run-SSHShell コマンド -- 対話型の SSH コマンド ラインを実行する(Funclet)


run-SSHCommand コマンド -- SSH(Funclet)を使用してリモート コマンドを実行する

run-SSHCommand は、既存の SSH セッション内でコマンドを実行するか、コマンドを実行するためのセッションを作成します。 指定されたコマンドが実行された後は、そのセッションは廃棄されます。 AutoShell はプライマリ リモート通信ルートとして SSH を使用しますが、このコマンドのリモート ノードではクライアント AutoShell を実行している必要はありません。 run-remote コマンドはクライアント AutoShell を実行しているリモート ノードでコマンドを実行する場合に適しています。これは、このコマンドがコマンドの実行に関する詳細情報を返すためです。

コマンドは SSH サーバを実行している任意のシステムで実行できます。 利用可能なコマンドとそのオプションは、リモート ノードに設定されたシェルに依存します。

コマンドの構文は、以下のとおりです。

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 セッションを作成する場合にのみ必要です。

デフォルト: ""

phrase

秘密鍵のパスフレーズを指定します。 キーが暗号化されていない場合、パスフレーズは不要です。 このコマンドを発行した後に非表示でパスワードを入力するには、引数としてオプションのプロンプトと PW_GET() を指定します。 引用符で囲まれていない引数トークンは自動的に文字列に変換されます。 式のコードは丸かっこ内に配置して、式が自動的に引用符で囲まれないようにします。

デフォルト: ""

-prompt prompt

(オプション)入力できるようになったことを示すために SSH サーバが表示するプロンプト文字列の末尾の固定部分(例: AutoShell では「::->」)を指定します。 この情報は、SSH セッションで実行されたコマンドの完了を判断するために必要です。 できるだけ多くの固定文字を指定します。 引用符で囲まれていない引数トークンは自動的に文字列に変換されます。 式のコードは丸かっこ内に配置して、式が自動的に引用符で囲まれないようにします。

デフォルト: "::->"

-port portnumber

(オプション)ターゲット システムに接続するポートです。

デフォルト: SSH の標準ポート 22。

-cmd cmd

(オプション)リモートの Windows システムで実行するコマンドを指定します。 引用符で囲まれていない引数トークンは自動的に文字列に変換されます。 式のコードは丸かっこ内に配置して、式が自動的に引用符で囲まれないようにします。 このパラメータは、公開鍵認証を使用して、オンザフライで SSH セッションを作成する場合にのみ必要です。

デフォルト: cmd

-session ssh

新しい SSHSession によって返される CASSHELL オブジェクト。 既存の SSH セッション オブジェクトを渡す場合、run-SSHCommand では、指定されたコマンドを実行するために SSH セッションを作成する必要はありません。 複数のコマンド セッション ネゴシエーションを実行する場合にログオンを 1 回のみ実行すると、通常は複数のセッションを割り当てるよりもパフォーマンスが向上します。 このパラメータを指定すると、host、user、pass、key、phrase、および port に渡された値は無視されます。 この情報は、セッションの作成時にすでに指定されています。

デフォルト: null

明示的にユーザ名とパスワードを指定し、SSH セッションを使用して、リモート ノードのディレクトリのリスト表示を実行します。

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

AutoShell のログインに使用したユーザ名とパスワードを使用し、SSH セッションを使用して、リモート ノードのディレクトリのリスト表示を実行します。

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

明示的に割り当てられた SSH セッションで 2 つのコマンドを実行します。

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)