FS_SHELL機能ブロック

このFS_SHELL機能ブロックは、インタラクティブシェルで1つまたは複数のリモートコマンドを実行します。

注意: システムコマンドは、リモートシステムに危害を及ぼしたり損傷させたりする可能性があります。また、既存のファイルが警告なしで上書きされることもあります。

ファイルシステムはFS_INITを使用して事前に初期化されていなければなりません。すべての操作は、設定された各ストレージメディアごとに非同期で実行されます。

入力RUN

正のエッジが生成されるたびに、指定されたコマンドが実行されます。

入力DEV

どのファイルにアクセスするかを定義します。このデバイスはプロジェクトごとに使用され、プロジェクト 外部ストレージのコンテキストメニューで管理できます。

入力PATH

ストレージメディア上のディレクトリへのパスを指定します。このパスは、UTF-8形式のUnixファイルパスに対応しています(サポートされている場合)。パスは次のように表示されます:

フォルダ/サブフォルダ

パスを使用することは任意です。設定された場合、そのディレクトリへの切り替えが成功しなければ、実行するコマンドは実行されません。

入力CMD

すべての実行する必要があるコマンドを定義します。すべてのコマンドは改行で終了する必要があります。例: "ls\n"。改行が使用されない場合、コマンドはおそらく実行されません。コマンドはサーバーからのフィードバック後に行ごとに実行されます。

すべてのコマンドを実行した後、最後に"exit\n"を送信して接続を即座に終了し、値を返す必要があります。その後、さらにコマンドを送信しないでください。そうしないと、出力ERRORがTRUEに設定されます。

注意: 接続が予期せず終了し、コマンドが送信されなかった場合、出力ERRORはTRUEに設定されます。

入力PTY

コンソール(仮想端末)のタイプを定義します。一部のデバイスでは、このパラメータは必須です。例: "vanilla", "exec", "vt100", "vt102", "ansi", "xterm"など。値が定義されていない場合、"vanilla"が使用されます。

"exec"の値は、SSHコマンドを介してOSからリクエストを実行します。これにより、よりモダンな方法が使用されます。ただし、この方法は少し非効率的です。入力ENVは接続前に設定されるため、無視される可能性があります。入力SIZEはこの方法では無視されます。

追加のSSHパラメータを渡す必要がある場合は、それぞれ新しい行に"exec"の後に追加できます。パラメータは大文字小文字を区別し、次の例のように指定されます。この例では、古いデバイス用にRSAアルゴリズムが有効になっています。

exec
HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa

利用可能なパラメータは次のとおりです:

execのSSHパラメータ 例値
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
ConnectTimeout 10
ServerAliveInterval 30
ServerAliveCountMax 3

注意: 詳細については、外部ドキュメントを参照してください: https://linux.die.net/man/5/ssh_config (英語)

入力ENV

アクティブな環境変数を定義します。複数の変数を指定するには、各行に1つずつ定義できます。例:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

入力SIZE

端末のサイズを定義します。デフォルトでは、文字単位で指定されますが、ピクセルでも定義できます。例: "80x25"または"640x480px"。値が定義されていない場合、"80x25"が使用されます。

入力RECV_PT

T#形式で、コマンドごとのデータ受信タイムアウトを定義します。タイムアウトが定義されていない場合、T#150msが使用されます。この値が十分に高くない場合、データ出力中に複数のコマンドが実行される可能性があります。

入力TIMEOUT

T#形式で、すべてのコマンドを実行するためのタイムアウトを設定します。このタイムアウトに達すると、接続が終了し、値が返されます。その際、ERRORはTRUEに設定されます。タイムアウトは接続の確立と認証後に評価されます。入力PTYを"exec"に設定した場合、実行時間は全期間にわたって評価されます。タイムアウトが定義されていない場合、T#300sが使用されます。

出力DONE

この出力は成功した場合にパルスを返し、次の操作を実行します。パルスは処理が終了する際に発生します。エラーが発生しても同様です。

出力RETURN

コマンドの実行が成功した場合、その戻り値を返します。この値は後で使用するために保存されます。

注意: コンソールは出力をフォーマットするため、制御文字やバイナリデータが含まれている可能性があります。

出力RETERR

コマンドの実行に失敗した場合、その戻り値を返します。SSHではSTDERRとも呼ばれます。この値は後で使用するために保存されます。

注意: コンソールは出力をフォーマットするため、制御文字やバイナリデータが含まれている可能性があります。

出力ERROR

エラーが発生した場合、この出力はエラーメッセージを含むテキストを返します。これはFALSEで、エラーが発生していないことを示します。この状態は後で使用するために保存されます。

可能性のある原因:

  • ストレージメディアのサービスが開始されていません。
  • ストレージが初期化されていません。
  • ログイン情報が無効です。
  • リモートサーバーにアクセスできませんでした。
  • ストレージメディアが存在しません。
  • 指定されたパスが無効です。
  • ストレージメディアに書き込めません。
  • ストレージに空き容量がないか、ストレージが読み取り専用です。
  • すべてのコマンドを送信する前に接続が予期せず終了しました。
  • 定義されたタイムアウトに達しました。

参照