sshでリモート実行するジョブを実行じの cat sos-ssh-retrn-values-xxx について

179 views
Skip to first unread message

takeshi kobayashi

unread,
Aug 9, 2019, 10:34:27 PM8/9/19
to 日本JobSchedulerユーザーグループ(JJUG)
小林と申します。初投稿になります。よろしくおねがいします。

下記環境でsshでリモート実行するジョブを運用しております。

【環境】
OS:      CentoOS7
java:    openjdk version "11.0.1" 2018-10-16 LTS
version: 1.12.7

【定義】
//環境依存の情報は置換しております。
<?xml version="1.0" encoding="ISO-8859-1"?>


<job  order="yes">
    <settings >
        <mail_on_error ><![CDATA[yes]]></mail_on_error>

        <mail_on_warning ><![CDATA[yes]]></mail_on_warning>

        <mail_on_success ><![CDATA[yes]]></mail_on_success>

        <log_mail_to ><![CDATA[エラーレポート送信先アドレス]]></log_mail_to>
    </settings>

    <params >
        <param  name="ignore_hangup_signal" value="true"/>

        <param  name="port" value="22"/>

        <param  name="command_delimiter" value="%%"/>

        <param  name="auth_method" value="publickey"/>

        <param  name="user" value="実行ユーザ"/>

        <param  name="auth_file" value="/home/scheduler/.ssh/秘密鍵.pem"/>

        <param  name="host" value="実行ホスト"/>

        <param  name="command" value="sudo  実行ジョブ.sh"/>
    </params>

    <script  language="java" java_class_path="" java_class="sos.scheduler.job.SOSSSHJob2JSAdapter"/>

    <run_time  time_zone="Asia/Tokyo"/>
</job>
----ここまで---

【実行ログ】
----ここから----
[info]   [stdout] 27 17:30:21.482 [INFO ] (SOSSSHJobJSch.java:591) - *** Command uname was executed successfully, remote OS and shell are Unix like! ***
[info]   [stdout] 27 17:30:22.485 [INFO ] (SOSVfsSFtpJCraft.java:1124) - isUnix=true
[info]   [stdout] 27 17:30:23.489 [INFO ] (SOSVfsSFtpJCraft.java:503) - [echo %ComSpec%][stdout]%ComSpec%
[info]   [stdout] 27 17:30:24.533 [INFO ] (SOSVfsSFtpJCraft.java:920) - SOSVfs-D-0101: Try to connect to host '実行ホスト名' at Port '22'.
[info]   [stdout] 27 17:30:24.762 [INFO ] (SOSVfsSFtpJCraft.java:810) - SOSVfs_D_133: user '実行ユーザ名' logged in.
[info]   [stdout] 27 17:30:25.765 [INFO ] (SOSVfsSFtpJCraft.java:1124) - isUnix=true
[info]   [stdout] 27 17:30:26.773 [INFO ] (SOSVfsSFtpJCraft.java:536) - [cat sos-ssh-return-values-05bdb4de-f005-4fb7-ae54-2acfd7414e08.txt]com.sos.JSHelper.Exceptions.JobSchedulerException: [cat sos-ssh-return-values-05bdb4de-f005-4fb7-ae54-2acfd7414e08.txt][stderr=cat: sos-ssh-return-values-05bdb4de-f005-4fb7-ae54-2acfd7414e08.txt: No such file or directory]remote command terminated with the exit code 1
----ここまで----

【質問】

コマンドが正常実行されたあとに、設定をしていないのですが
sos-ssh-return-values-05bdb4de-f005-4fb7-ae54-2acfd7414e08.txt
というファイルをcatし、ファイルが存在していないため、exit 1 を戻しています。

特段問題は発生していないのですが、ネガティブな内容がログに残っているため抑制する方法は無いでしょうか?

海外サイトの情報も探してみましたが、良い検索キーワードが見つからず、ここへたどり着きました。




Satoru Funai

unread,
Aug 15, 2019, 10:49:12 PM8/15/19
to takeshi kobayashi, 日本JobSchedulerユーザーグループ(JJUG)
小林さん
https://sourceforge.net/p/jobscheduler/discussion/486122/thread/3100b5b0/
上記で本事象と似たようなエラーが発生していました。


>[info] [stdout] 27 17:30:26.773 [INFO ] (SOSVfsSFtpJCraft.java:536) - [cat sos-ssh-return-values-05bdb4de-f005-4fb7-ae54-2acfd7414e08.txt]com.sos.JSHelper.Exceptions.JobSchedulerException: [cat sos-ssh->return-values-05bdb4de-f005-4fb7-ae54-2acfd7414e08.txt][stderr=cat: sos-ssh-return-values-05bdb4de-f005-4fb7-ae54-2acfd7414e08.txt: No such file or directory]remote command terminated with the exit code 1
上記のエラーが発生する原因は、sshリモートホストでのコマンド実行の戻り値を受け取る設定がされていないため、エラーが発生しています。

https://kb.sos-berlin.com/display/PKB/How+To+-+Usage+of+the+SSH+Job+%28JobSchedulerSSHJob%29+with+JCraft%27s+JSch

回避方法は、上記のナレッジのサンプルジョブチェーン(Example 2: A job chain that processes return values)にもあるように、
sshリモートホストでのコマンドの実行の戻り値を保存する以下のような設定を行い、
<param name="command" value="echo ADD='Hallo Welt' &gt;&gt; \$SCHEDULER_RETURN_VALUES"/>

戻り値を受け取るジョブを作成することにより、本エラーを回避できます。
詳細は上記のナレッジを確認いただければと思います。

ふない

----- 元のメッセージ -----
> 差出人: "takeshi kobayashi" <koba...@gmail.com>
> 宛先: "日本JobSchedulerユーザーグループ(JJUG)" <jobsche...@googlegroups.com>
> 送信済み: 2019年8月10日, 土曜日 午前 11:34:27
> 件名: sshでリモート実行するジョブを実行じの cat sos-ssh-retrn-values-xxx について
>
>
>
> 小林と申します。初投稿になります。よろしくおねがいします。
>
>
> 下記環境で ssh でリモート実行するジョブを運用しております。

> --
> このメールは Google
> グループのグループ「日本JobSchedulerユーザーグループ(JJUG)」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> jobscheduler-...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには
> https://groups.google.com/d/msgid/jobscheduler-ja/3b2f0562-368c-43de-b728-76a4430f980d%40googlegroups.com
> にアクセスしてください。
>

takeshi kobayashi

unread,
Aug 18, 2019, 11:39:24 PM8/18/19
to 日本JobSchedulerユーザーグループ(JJUG)
ふないさん

情報ありがとうございます。

kbを確認しましたが、ここで実施しているのは

SCHEDULER_RETURN_VALUES という変数に、コマンドの「標準出力」を格納している用に見えます。
戻り値そのものは mail_on_error や mail_on_accessで判断できているため取得できているように見受けられます。

SCHEDULER_RETURN_VALUESが未定義でないという事象が必用なのでしょうか。

標準出力・標準エラー出力は確認用メッセージを表示しているため、下記のように実施する形になりそうです。

<param name="command" value="command1; echo $0 &gt;&gt; \$SCHEDULER_RETURN_VALUES"/>/>

テスト環境で検証をしてみます。


2019年8月16日金曜日 11時49分12秒 UTC+9 satoruf:

takeshi kobayashi

unread,
Aug 19, 2019, 12:46:27 AM8/19/19
to 日本JobSchedulerユーザーグループ(JJUG)
検証の前に、公式ドキュメントを確認してみました。

https://kb.sos-berlin.com/display/PKB/How+To+-+Usage+of+the+SSH+Job+%28JobSchedulerSSHJob%29+with+JCraft%27s+JSch

How To - Usage of the SSH Job (JobSchedulerSSHJob) with JCraft's JSch

Introduction

The Job sets an environment variable to the session on the remote host with the name SCHEDULER_RETURN_VALUES which is available for the script or command to be executed on the remote machine. The value (the name of the temporary file) for this environment variable will be generated at runtime. After the execution of the script or command the jobs reads the return values from that temporary file on the remote host, returns them to the Jobscheduler for further processing and deletes the temporary file afterwards.

とありました。

実際のコマンドは sudo -u 実行ユーザ command1 のようにしています。
テンポラリファイルの出力先がsudo したユーザで書き込めない場所にあるのかもしれません。


2019年8月19日月曜日 12時39分24秒 UTC+9 takeshi kobayashi:

koba...@gmail.com

unread,
Aug 13, 2020, 3:01:39 AM8/13/20
to 日本JobSchedulerユーザーグループ(JJUG)
jobscheduler を 1.13.5 にバージョンアップした段階で
JobSchedulerSSHJob  を利用しているJobが実行できなくなりました。(Class Not Found Exception)

当該JobのclassをSOSSSHJob2JSAdapterへ書き換えたところSOSVfsSFtpJCraftに関するエラーが発生しなくなりました。
過去に投稿したJobに誤りがあったかもしれません。

ご参考まで
2019年8月19日月曜日 13:46:27 UTC+9 koba...@gmail.com:
Reply all
Reply to author
Forward
0 new messages