配列情報を利用したループについて

51 views
Skip to first unread message

ももなな

unread,
Mar 7, 2023, 11:39:35 PM3/7/23
to 日本JobSchedulerユーザーグループ(JJUG)
JobSchedulerを利用して以下のことを実現したいのですが、可能でしょうか。
1.CSVファイルを読み込み、各列を配列情報としてJobSchedulerへ引き渡す
  ※CSVの読み込み毎に、配列の要素数は動的になります。

2.JobSchedulerで受け取った配列の要素数分、ループ内の処理を実施

基本的な動作と思い、調べたのですが実現出来そうな情報に行きつかなかったため、
ご教示頂けたらと存じます。

Satoru Funai

unread,
Mar 8, 2023, 12:22:51 AM3/8/23
to ももなな, 日本JobSchedulerユーザーグループ(JJUG
ももななさん
ご使用されているJobSchedulerのバージョンを教えてください
船井

----- 2023年3月8日午後 1:39 に ももなな <tanda.fr...@gmail.com>さんが書いたメッセージ:
--
このメールは Google グループのグループ「日本JobSchedulerユーザーグループ(JJUG)」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには jobscheduler-...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/jobscheduler-ja/0adab18e-b8cd-49f8-9bea-0aefbc25803cn%40googlegroups.com にアクセスしてください。

ももなな

unread,
Mar 8, 2023, 12:57:17 AM3/8/23
to 日本JobSchedulerユーザーグループ(JJUG)
船井様

使用しているバージョンは「2.3.2」になります。

2023年3月8日水曜日 14:22:51 UTC+9 satoruf:

Satoru Funai

unread,
Mar 8, 2023, 5:54:18 AM3/8/23
to ももなな, 日本JobSchedulerユーザーグループ(JJUG
ももななさん
すいません、もう少し具体的にcsvファイルの内容と処理したい内容を教えていただけませんか?
あと本日最新版のV.2.5.2がリリースされましたので、アップデートお願いします
船井

----- 2023年3月8日午後 2:57 に ももなな <tanda.fr...@gmail.com>さんが書いたメッセージ:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/jobscheduler-ja/6f9318a8-edad-44a3-a1ab-64aa2bae2c85n%40googlegroups.com にアクセスしてください。

ももなな

unread,
Mar 8, 2023, 6:53:55 PM3/8/23
to 日本JobSchedulerユーザーグループ(JJUG)
船井様

情報が少なく申し訳ありませんでした。

ターゲットサーバから複数サーバに対して処理を実施したいと考えています。

簡単な例になりますが、以下のような処理になります。
CSVファイルには、「ホスト名」と「IPアドレス」が記載されており
各列を配列情報としてJobSchedulerへ引き渡します。

引き渡されたIPアドレスの配列情報でループ

ループ内の処理では、IPアドレスに対してpingコマンドを実施

のような形になります。

2023年3月8日水曜日 19:54:18 UTC+9 satoruf:
Message has been deleted

PowerArrowShooter

unread,
Mar 9, 2023, 4:30:40 AM3/9/23
to 日本JobSchedulerユーザーグループ(JJUG)
ループ処理で行う内容自体が、もし通常のコマンドで完結するならば
単一job内で、csv読み込み~ループ処理までの処理を記述するのが
一番楽そうではあります。
(シェルジョブに直接処理を記述、またはシェルジョブからスクリプトを実行)

もしWorkflowの定義の処理が必要という場合、
Workflowの機能だけでループを実装する方法は思い浮かばないですが、、、
Web API 利用ならば、実現可能です。

(csvファイルを読み込み、各レコード毎に、orderを投げる処理を書く)

JS7® JobScheduler Web API 利用サンプル
https://qiita.com/saitamanokusa/items/fde0cb4d924fed5916ee


シェルスクリプトならば、例えば下記のように書けます。
(ip_address, host_name の2つのorder変数を指定)

------------------------------------------

#order追加
json=$(
  cat <<EOS
{
  "controllerId": "$js7_controller_id",
  "orders": [
    {
      "workflowPath": "/test/check_variables",
      "arguments": {
        "ip_address": 192.168.11.1,
        "host_name": "web-001"
      }
    }
  ]
}
EOS
)
res=$(curl -k -s -X POST \
    -H "X-Access-Token: $js7_access_token" \
    -H "Content-Type: application/json" \
    -d "$json" "$js7_api_url/orders/add")

#order結果確認
js7_order_id=$(echo "$res" | jq -r '.orderIds[]'

json=$(
    cat <<EOS
{
  "controllerId": "$js7_controller_id",
  "orderId": "$js7_order_id"
}
EOS
)

res=$(curl -k -s -X POST \
        -H "X-Access-Token: $js7_access_token" -H "Content-Type: application/json" \
        -d "$json" "$js7_api_url/orders/history")

echo "$res" | jq .
------------------------------------------


あとは、処理が一度に流れないよう工夫すればよさそうです。
・orderの完了を待って次のOrderを投げるように、処理を調整
・スクリプト中に、適当な時間のsleepを入れる
・Lock機能を使って重複処理を防止

2023年3月9日木曜日 8:53:55 UTC+9 ももなな:

Satoru Funai

unread,
Mar 10, 2023, 7:25:10 AM3/10/23
to PowerArrowShooter, 日本JobSchedulerユーザーグループ(JJUG
PowerArrowShooterさん、ありがとうございます。
残念ながらJS7ではcsvインポートする機能はありませんので、ワークフローのジョブの中でcsvインポートしてデータを変数に代入する必要があります。
代入した変数を読み出してループ(Cycle命令)や並列処理(ForkList命令)することは可能です
船井

----- 2023年3月9日午後 6:30 に PowerArrowShooter <inazumaar...@gmail.com>さんが書いたメッセージ:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/jobscheduler-ja/cd2463d0-4484-4e10-b23e-54b08c2fc054n%40googlegroups.com にアクセスしてください。

Reply all
Reply to author
Forward
0 new messages