コマンド&スクリプト [オンプレミス]

コマンド&スクリプト [オンプレミス]

コマンド&スクリプトとは

コマンド&スクリプトは、特定のタスクをシステム上で実行するために作成するカスタマイズ可能な指示文です。これらは、Python、Bash、PowerShellなどの言語で書かれた単一のコマンドから複雑なスクリプトまで、幅広いものがあります。

サポートされているスクリプト

  1. Bash
  2. Batch
  3. PowerShell
  4. Python
  5. VBScript

ローカル実行とリモート実行

コマンド&スクリプトは、ローカル実行とリモート実行の2つの異なるモードで実行することができます。
  1. ローカル実行:この場合、コマンド&スクリプトファイルはローカルシステム上で実行されます。ワークフローで実行されると、オンプレミスエージェントはローカルシステムからスクリプト/コマンドにアクセスし、実行します。この機能はローカル環境内のタスクに最適です。
  2. リモート実行:この場合、コマンド&スクリプトファイルはプライベートネットワークに連携されたリモートシステム上で実行されます。オンプレミスエージェントは実行時に指定されたリモートシステム上でコマンドまたはスクリプトを実行します。これにより、組織内での集中的な制御と管理が可能になります。

一般的な使用例

ワークフローにコマンドとスクリプトを追加することで、以下のようなさまざまな処理を自動化することができます。
  1. ファイル変換、データ変換、品質チェックなどのデータ処理を行うことができます。
  2. バックアッププロセスの自動化、FTPファイル共有、大量のファイルやディレクトリの名前変更、移動、削除など、ファイルやディレクトリの操作をすることができます。
  3. 実行条件やイベントに基づいてリモートシステムに通知やアラートを送信することができます。
  4. ネットワークドライブの関連付け、ネットワークのステータスや設定の問題などに対応するネットワーク操作が可能です。

コマンド&スクリプトの実行の自動化

フローにコマンドやスクリプトの処理を設定するには、以下の手順に従ってください。
  1. オンプレミスエージェントをインストールします。
  2. エージェントの専用ファイルにコマンドまたはスクリプトを追加します。
  3. [コマンド&スクリプト]アプリの連携を作成します。
  4. [処理]を設定します。
  5. フローを有効にします。
これらの手順は以下で詳しく説明します:

1.オンプレミスエージェントのインストール

新しいオンプレミスエージェントの作成方法

2.専用のファイルにコマンドやスクリプトの追加

コマンド&スクリプトツールは、オンプレミスエージェントのインストールディレクトリ内の script.propertiesファイルから、コマンドとスクリプトを読み込みます。新しいコマンドやスクリプトを追加すると、それらは処理設定時のドロップダウン選択肢として表示されます。 

ローカルで実行するためのコマンドやスクリプトの追加

指定されたファイルにコマンドやスクリプトを追加するには
  1. エージェントのディレクトリに移動し、scripts.propertiesファイルを選択します(...../FlowAgent/user/script/script.properties)
  2. 以下のパラメータを使用してコマンド/スクリプトを追加します。

    name:
    処理を設定する際に表示されるコマンドの表示名です。

    working_directory: コマンドやスクリプトが実行されるべきフォルダーのフルパスです。

    arguments: ワークフローからコマンドやスクリプトに渡したい入力引数です。これらのパラメーターは、処理を設定するときに項目として表示されます。引数はコンマで区切らなければなりません。引数の値の前に「mandatory」を追加します。例:mandatory:source, destination

    command: 実行したいコマンドです。引数には$接頭語を付けてコマンドを再構成する必要があります。たとえば、「cp /home/sourcefile /home/destination」は、「cp $source $destination」と書く必要があります。

    または、スクリプトを設定している場合、

    script: スクリプトファイルの絶対パスの位置です。

    timeout_in_seconds: コマンドまたはスクリプトの実行が終了するまでの時間です。その後、プロセスは終了します。最大タイムアウト=120秒。

    output_required: 出力を記録し、フローの履歴に表示するかどうかは設定によります。falseに設定すると、実行のステータスのみが表示されます。

    output_local_save: trueに設定すると、user/script/outputの下にログファイルが作成され、出力がログファイルに追加されます。出力が10,000文字の制限を超える場合、フローの履歴には切り捨てられた出力が表示されます。このオプションをtrueに設定すると、ログファイルで完全な出力を表示することができます。
コマンドが追加される例は以下の通りです。
1.name=List 
1.working_directory=/Users/Zylker-08/ 
1.arguments=mandatory:directory 
1.command=ls -l $directory 
1.output_required=true
スクリプトが追加される例は以下のとおりです。
12.name=HTML 
12.working_directory=/Users/Zylker-08/script/ 
12.arguments=mandatory:content 
12.script=/Users/Zylker-08/script/html.vbs

重要な注意: 
  1. すべてのコマンド/スクリプトのパラメーターに一意の識別子を使用して関連付けるための接頭語として、数字とピリオドを追加する必要があります。同じ接頭語を異なるコマンド/スクリプトで使用しないでください。ただし、接頭語は特定の順序である必要はありません。
  2. フローで一度コマンド/スクリプトを使用したら、その特定のコマンド/スクリプトのパラメータの接頭語を変更しないでください。
  3. スクリプトの実行最大タイムアウトは120秒で、それを超えると実行は自動的に終了します。
  4. システムでスクリプトを実行するためには、必要なすべての権限を提供する必要があります。

リモートで実行するためのコマンドやスクリプトの追加

上記と同じ手順に従って、リモートで実行することを意図したコマンドやスクリプトを追加することができます。ただし、パラメータ「timeout_in_seconds」は、リモートコマンド&スクリプト処理では使用できません。

また、「host」パラメータを追加し、ホストシステムを許可リストに追加する必要があります。ホスト項目は必須です。以下の図は、ポストパラメータを使用して同一ネットワーク内の異なるシステムへのアクセスを許可するか取り消す方法を示しています。
  1. Add host= ホスト1.2.2.2のみの処理を設定する際にコマンドがリストされるように、1.2.2.2を追加します。
  2. Add host=*、すべてのリモート ホストに対してコマンドをリストします。
  3. Host=*/1.2.2.2, これはホスト1.2.2.2を除くすべてのホストシステムの処理を設定する際にコマンドがリストされるようにするためのものです。
リモート実行のためのコマンドが追加される例は以下のとおりです。
1.name=List 
1.working_directory=/Users/Zylker-12/script 
1.arguments=mandatory:source,mandatory:destination 
1.command=cp$source$destination
1.host=1.1.1.1 
1.output_required=true
スクリプトが追加される例は以下のとおりです。
12.name=CreateFolder 
12.working_directory=/Users/Zylker-12/script/batch 
12.arguments=mandatory:FolderName
12.script=/Users/Zylker-12/script/batch/CreateFolder.bat 
12.host=1.1.1.1

重要な注意: 
  1. すべてのコマンド/スクリプトのパラメータに一意の識別子を使用して関連付けるための接頭語として、数字とピリオドを追加する必要があります。同じ接頭語を異なるコマンド/スクリプトで使用しないでください。ただし、接頭語は特定の順序である必要はありません。
  2. フローで一度コマンド/スクリプトを使用したら、その特定のコマンド/スクリプトのパラメータの接頭辞を変更しないでください。
  3. スクリプトの実行最大タイムアウトは120秒で、それを超えると実行は自動的に終了します。
  4. システムでスクリプトを実行するためには、必要なすべての権限を提供する必要があります。

3.コマンド&スクリプト連携の作成 

ローカルとリモートでのコマンド&スクリプトの実行には別々の外部連携を作成する必要があります。ただし、これらの外部連携を作成するためには、同じエージェントを使用できます。

コマンド&スクリプト(ローカル)連携の作成
連携を作成するには
  1. 該当する処理をフローにドラッグ&ドロップします。
  2. アカウントに他のコマンド&スクリプト連携がない場合は、連携をクリックします。それ以外の場合は、[+新しい連携] をクリックします。または、[設定]タブに移動し、[外部連携]を選択して新しい連携を作成することもできます。
    その場合、[外部連携を作成する] をクリックし、[コマンド&スクリプト]を選択します。
  3. すでに作成したオンプレミスのエージェントを選択します。
  4. [外部連携名]を入力します。
  5. [コマンド & スクリプト](リモート)の場合は、次の項目も設定する必要があります:
    ホスト:コマンド&スクリプトを実行するシステムの名前です。
    ユーザー名:マンドまたはスクリプトを実行するターゲットシステムのユーザー名です。
    パスワード:コマンドまたはスクリプトを実行するターゲットシステムのパスワードです。このシステムでコマンドにアクセスして実行するための適切な権限があることを確認してください。
    ポート:プライマリシステムがリモートシステムにアクセスするポートです。通常、ポートは、「22」です。
  6. [認証する]をクリックします。

4.処理の設定

処理を設定するには
  1. 新しいフローを作成します。
  2. 画面の左側にある、[条件処理] に移動します。
  3. スクリプト言語などの特定の要件および、実行環境(ローカルシステムかリモートか)に基づいて、[コマンド&スクリプト] の処理をドラッグ&ドロップします。
  4. 処理の設定を行う際に、前の手順で作成した外部連携を[外部連携]ドロップダウンから選択します。
  5. コマンド&スクリプトのドロップダウンから実行したいコマンドまたはスクリプトを選択します。
    注意:リモート実行処理の場合、各ホストで許可リストに記載されているコマンド&スクリプトのみが表示されます。
  6. コマンドまたはスクリプトを選択すると、選択したコマンドまたはスクリプトに関連付けられた「scripts.properties」ファイルで設定された引数が個別の項目として表示されます。これらの引数を、前のステップで関連付けられた変数に自動的に関連付けるか、手動で値を入力します。
  7. [完了する]をクリックします。
  8. ローを一度テストし、問題なければ有効にします。

Zoho Flowで利用可能な処理

コマンド&スクリプト 

処理(ローカルおよびリモートの両方の実行)

コマンドの実行  
この処理を使用すると、表示、コピー、移動などの単一行のコマンドを実行することができます。

PowerShellスクリプトの実行
VBScriptの実行 
Bashスクリプトの実行
バッチスクリプトの実行 
Pythonスクリプトの実行
これらの処理を利用すると、データベースのバックアップ、システムログの監視、ネットワークトラフィックの監視、ソフトウェア更新の自動化、ユーザーグループの管理、Active Directoryでのユーザーの作成と変更、Webスクレイピングなど、多岐にわたる操作を実行ことができます。

よくある問題

スクリプトが実行されません。(エラー13:許可が拒否されました)
スクリプトを実行する前に、スクリプトを実行するために必要なすべての権限を設定します。

(エラー2:指定されたファイル/ディレクトリはありません)というエラーが表示されます。
ファイルが存在するか確認してください。また、「script.properties」ファイルでスクリプト名が正しく指定されているか確認してください。相対的な作業ディレクトリのみを指定している場合は、パスに「(./)」を追加します(例:./startagent.sh)または、file_path引数で完全な(絶対)パスを指定します。

「引数が表示されていません」というエラーが表示されます。
パラメータのグループ化(番号付け)が正しく行われていることを確認してください。たとえば、最初のスクリプトで「12.arguments」を使用し、別のスクリプトで再度「12.arguments」を使用すると、エージェントは両方のパラメータを番号「12」でインデックス付けされたスクリプトの一部としてグループ化します。

macOSでリモートスクリプトの実行を行っている際に、「操作は許可されていません」というエラーが表示されます。
ファイルとフォルダーのアクセス権限を確認してください。スクリプトとそのフォルダーの両方に実行権限を設定する必要があります。

リモートで実行する際にホスト名の使用に問題があります。
ホスト名の代わりにシステムのIPアドレスを使用することができます。IP使用時にDHCPが設定されている場合は、新しいIPを使用して再連携する必要があります。

macOSでコマンドをリモートで実行する際に、「連携拒否」のエラーが表示されます。
[設定][共有]に移動します。リモートログインが有効になっているか確認してください。無効の場合は、有効にしてから再度コマンドを実行してみてください。