JS7® JobSchedulerファイル転送機能

JS7®JobSchedulerは独SOS社(Software- und Organisations-Service GmbH)によって開発されている、オープンソースのジョブ管理システムです。
JS7®JobSchedulerではYADEと呼ぶファイル転送機能が組み込まれており、ジョブからファイル転送の仕組みを利用することができます。
本記事では、JS7®JobSchedulerでファイル転送機能を利用する方法を記載しています。

https://kb.sos-berlin.com/display/JS7/JS7+-+File+Transfer

詳細な情報については、以下をご覧下さい。
- ナレッジベース（英語）　https://kb.sos-berlin.com/display/PKB/JS7
- 日本語紹介資料 https://www.ossl.co.jp/
- 日本語フォーラム　https://groups.google.com/forum/?hl=ja#!forum/jobscheduler-ja
- Facebook https://www.facebook.com/Jobscheduler-Japan-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97-594469610565511/timeline/
- 日本JobSchedulerユーザーグループ https://sites.google.com/site/jobschedulerja/
- JIRA（英語） 　https://change.sos-berlin.com/secure/Dashboard.jspa
- User Forum（英語）　http://sourceforge.net/projects/jobscheduler/forums/forum/486122
- SOS社ホームページ　http://www.sos-berlin.com

# 1. 前提条件

JS7® JobScheduler V.2.3以上がインストール済みであること
ワークフローの作成／実行が一通りできること
JS7® JobSchedulerの概要及びインストール方法については以下を参照ください
**Dockerでのインストール手順**　https://qiita.com/satoruf/items/360fee5293611433ed33
**Windowsでのインストール手順**　https://qiita.com/Yoshitami/items/6804584592956a483364
**Linux/CLIでのインストール手順**　https://qiita.com/satoruf/items/fa9846f4376d1a50a67e
**JS7® JobSchedulerクイックスタート**https://qiita.com/satoruf/items/96f21ef25bcb35e47b21

# 2. YADEについて
## (1) アーキテクチャー
YADEはJS7エージェントに組み込まれているため別途インストールや設定が不要で、ジョブの中からファイル転送が行え、全ての実行計画・履歴をJOCコックピットで集中管理できます。

![yade.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/ec9d44cb-0c5a-ad96-28e9-8f7114f1b69d.png)

## (2) 機能概要

https://kb.sos-berlin.com/display/PKB/YADE+Advanced+File+Transfer

- **マルチプロトコル**： ftp/ftps/sftp/http/https/SMB/WebDAV/ローカルファイルに対応し、ソースとターゲットで異なるプロトコルを使用できます。
- **ゼロタッチダウン**: YADEクライアント上ではデータストリームは32KB（変更可能）ごとのチャンクでメモリー上に展開され、ローカルストレージには保存されません。
- **マルチプラットフォーム**: YADEはJavaで実装されているため、JS7エージェント同様Java(1.8以上)が稼働する環境であればOSを選びません。
- **ジャンプホスト転送**: インターネット経由でファイルアップロード・ダウンロードする場合でも、DMZ上に中継用ジャンプホストを配置することによって安全なデータ交換を実現します。
![jumphost.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/c5edf3ab-ea1d-5467-ce0f-fbbe8aad0cf8.png)
- **アトミック転送**: ファイル送信先で転送途中のファイルが処理開始されないように、転送完了するまで自動的にファイル名を一時的に変更し、転送完了後に正式なファイル名に変更します。
- **トランザクショナル転送**: 複数のファイルを送信する場合、一部のファイルでエラーが発生し、リトライが全て失敗した場合、全ての送信されたファイルが取り消されます。
- **ファイル完全性確認**: ファイルが送信元と受信先で差異がないか、チェックサムとサイズで確認できます。
- **ファイル圧縮**: ファイル送信時に自動的に圧縮できます。
- **クレデンシャルストア機能**: 認証情報に[クレデンシャルストア](https://qiita.com/satoruf/items/15fe6963b4a0c481e43c)が使用できます。

# 3. ファイル転送の作成

ファイル転送定義はXML形式となっており、XSDスキーマを使うことによって穴埋め形式で作成することができます。

https://kb.sos-berlin.com/display/JS7/JS7+-+File+Transfer+Deployment

XSDスキーマ(YADE_configuration_v1.12.xsd)がJOCコックピットにインストールされている必要がありますが、Dockerイメージには含まれていませんので、別途インストールする必要があります。詳細は下記をご参照ください。

https://kb.sos-berlin.com/display/JS7/JS7+-+Troubleshooting+-+YADE+XSD+Schema+does+not+offer+all+XML+Elements

## (1) ジョブリソースの作成
最初にYADEで使用するパラメータを設定するために、ジョブ定義メニューのインベントリーからジョブリソース新規作成をクリックします。
![スクリーンショット 2022-06-17 17.20.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/cc568b1f-6195-4c4b-357b-13de5d42d4c7.png)
適当な名前を入力し、ここでは何もせずに登録されたことを確認します。

## (2) ファイル転送定義の作成

ファイル転送定義を作成するには、ジョブ定義メニューのファイル転送タブから新規作成をクリックし、Configurationsのアクションメニューから子ノードを追加 > JobResourceを選択します。
![スクリーンショット 2022-06-17 17.17.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/24d416e8-1d0c-9bf5-e81f-f7ad4ef94788.png)
属性のname欄をクリックすると先ほど作成したジョブリソースが表示されるのでそれを選択。
![スクリーンショット 2022-06-17 17.24.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/01648950-ad55-0e58-7dbc-7f938e793bdf.png)
environment_variable = yadeXml
variable = YADE_XML
と入力し確認、配置をクリック。
![スクリーンショット 2022-06-17 17.27.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/bf8200d9-f511-8748-24af-c1aa55240b47.png)
先ほど作成したジョブリソースをインベントリーから開くと、引数と環境変数が設定されていることを確認します。
![スクリーンショット 2022-06-17 17.29.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/adfb9f7a-6913-a1b9-b384-1e75a138e3ac.png)

https://kb.sos-berlin.com/display/JS7/JS7+-+File+Transfer+Configuration

**ファイル転送の定義項目**
定義には先ほど作成したJobResource以外に大きく分けて以下の３つのノードがあり、各ノードに複数のエントリーを作成することができます。
各ノードの説明は、Configurationsのアクションメニューから全子ノード表示をクリックすると表示されます。

---
Fragments: Profilesから参照される共通設定
-ProtocolFragments: 送受信先サーバーへの通信プロトコル、ホスト名、認証情報などを設定
-NotificationFragments: 通知用メール内容設定（ワークフロージョブの通知設定とは別）
-CredentialStoreFragments: クレデンシャルストアの設定
-MailServerFragments: 通知用メールサーバー設定（ワークフロージョブの通知設定とは別）

---

Profiles: 対象サーバーと操作ごとに設定し、Profile毎に下記から必要なものを設定、profile名は後述するジョブ変数$YADE_PROFILEで使用する
-Operation: Copy/Move/Remove/GetListなどのファイル操作、ソースとターゲットおよびオプションを設定
-Client: クライアント情報（オプション）
-JobScheduler: JITLジョブ作成(JS7では廃止)
-Logging: ファイル転送ログ定義（オプション）
-NotificationTriggers: 通知メール設定（NotificationFragmentsを参照）
-Notofications: 通知用メールサーバー設定（MailServerFragmentsを参照）
-Assertions: ファイル転送の結果判定条件（オプション）
-Documentation: Profileに関するドキュメントリンク（オプション）
-SystemPropertyFiles: Profileに設定するJavaプロパティ（オプション）

---

General: Configuration内全てに適用される基本設定
-SystemPropertyFiles: Profileに設定するJavaプロパティ（オプション）
-Logging: ファイル転送ログ定義（オプション）
-Notofications: 通知用メールサーバー設定（MailServerFragmentsを参照）
-Assertions: ファイル転送の結果判定条件（オプション）
-Documentation: Profileに関するドキュメントリンク（オプション）
-RetryOnConnectionError: 送受信先とのコネクションエラー時のリトライ回数、間隔設定（オプション）

---

**ファイル転送の定義例**
本記事では簡単な例としてローカルファイルからリモートサーバーにファイルをsftpコピーする定義を作成します。
- JobRsource Fragments: 先ほど作成した"FileTransfer"リソース定義を設定します。
- ProtocolFrangments: アクションメニューの子ノードを追加からSFTPFrangmentを選択し、nameにユニークな名称を入力します。
  SFTPFrangmentのアクションメニューの子ノードを追加から、BasicConnectionとSSHAuthenticationを作成します。
BasicConnectionのHostnameにはFQDN名/URL/IPアドレスなどを入力、Portには使用ポート番号(sftpは22)を入力します。
SSHAuthenticationにはアカウント名、パスワードを入力します。

**[クレデンシャルストア](https://qiita.com/satoruf/items/15fe6963b4a0c481e43c)の利用**
クレデンシャルストアを使用すると、上記ProtocolFrangmentsの``Hostname, Account, Password, Publickey``などの項目を平文で書くことなく``cs://@url, cs://@user, cs://@password, cs://@attachment``のようにクレデンシャルストアに登録した内容を呼び出せます。
- そのために、大元のFrangmentsのアクションメニューの子ノードを追加から、CredentialStoreFragmentsを作成しnameにユニークな名前を入力します。
- 次にCredentialStoreFragmentsのアクションメニューの子ノードを追加から、CSFile, CSAuthentication, CSEntryPathを作成します（各項目内容については[クレデンシャルストア](https://qiita.com/satoruf/items/15fe6963b4a0c481e43c)を参照してください）
- 最後に作成済みのProtocolFragments>SFTPFragmentsのアクションメニューの子ノードを追加から、CredentialStoreFragmentRefを作成し、CredentialStoreFragmentsで作成したnameを選択します。

次は、実際のファイル操作を定義するためにProfileを作成します。
- Profile: Profilesアクションメニューの子ノードを追加からProfileを選択し、nameにユニークな名称を入力します。
- Operation: Profileアクションメニューの子ノードを追加からファイル操作を選択（本記事ではCopy）し、CopySourceとCopyTargetを作成します。
- CopySource: 本記事ではローカルファイルを転送しますので、CopySourceFragmentsRef>LocalSourceを作成します。デレクトリ/ファイル名などを設定することもできますが、今回はジョブの中でオーダー変数で指定しますのでここでは設定しません。
- CopyTarget: CopyTargetアクションメニューの子ノードを追加からCopyTargetFragmentRefとDirectoryを作成し、CopyTargetFragmentRefには、ProtocolFragmentで作成したSFTPFragment名を選択します。
- Directoryは、送信先リモートサーバーの保存先ディレクトリーパスを指定します。

<details><summary>上記定義のサンプルXML（demo.xmlで保存してファイル転送定義メニューからインポート可能）</summary>

```xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Configurations>
    <JobResource name="Filetransfer" variable="yadeXml" environment_variable="YADE_XML"/>
    <Fragments>
        <ProtocolFragments>
            <SFTPFragment name="demo_sftp">
                <BasicConnection>
                    <Hostname><![CDATA[cs://@url]]></Hostname>
                    <Port><![CDATA[22]]></Port>
                </BasicConnection>
                <SSHAuthentication>
                    <Account><![CDATA[cs://@user]]></Account>
                    <AuthenticationMethodPassword>
                        <Password><![CDATA[cs://@password]]></Password>
                    </AuthenticationMethodPassword>
                </SSHAuthentication>
                <CredentialStoreFragmentRef ref="demo"/>
            </SFTPFragment>
        </ProtocolFragments>
        <CredentialStoreFragments>
            <CredentialStoreFragment name="demo">
                <CSFile><![CDATA[/var/sos-berlin.com/js7/agent/var_4445/config/demo.kdbx]]></CSFile>
                <CSAuthentication>
                    <KeyFileAuthentication>
                        <CSKeyFile><![CDATA[/var/sos-berlin.com/js7/agent/var_4445/config/demo.keyx]]></CSKeyFile>
                    </KeyFileAuthentication>
                </CSAuthentication>
                <CSEntryPath><![CDATA[demo/js7centos7]]></CSEntryPath>
            </CredentialStoreFragment>
        </CredentialStoreFragments>
    </Fragments>
    <Profiles>
        <Profile profile_id="sftp_demo_from224_to249">
            <Operation>
                <Copy>
                    <CopySource>
                        <CopySourceFragmentRef>
                            <LocalSource/>
                        </CopySourceFragmentRef>
                    </CopySource>
                    <CopyTarget>
                        <CopyTargetFragmentRef>
                            <SFTPFragmentRef ref="demo_sftp"/>
                        </CopyTargetFragmentRef>
                        <Directory><![CDATA[/tmp]]></Directory>
                    </CopyTarget>
                </Copy>
            </Operation>
        </Profile>
    </Profiles>
</Configurations>
```

</details>

定義完成後、画面右上の確認、配置ボタンをクリックしエラーなく配置されることを確認します。
![スクリーンショット 2022-06-20 16.53.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/92c37e99-463a-ed54-4f09-6175b25cde7c.png)


## (3) ファイル転送ワークフローの作成

https://kb.sos-berlin.com/display/JS7/JS7+-+File+Transfer

#### 1.ワークフロー作成
ジョブ定義>インベントリーメニューから、新規ワークフロー作成を選択し、適当な名前を登録します。
![スクリーンショット 2022-06-21 11.32.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/f5718fd6-0efb-c1c3-189b-af3423d08c3c.png)
- ジョブリソースは、"Default"と作成した"Filetransfer"を設定します。
- ワークフローオーダー作成時に送信ファイル指定できるように、fileというオーダー変数を作成し、String型で、送信元ファイルパスを登録します。

#### 2.ジョブ作成
適当な名前でshellジョブを作成します。
YADEを使用するためのshellスクリプトは下記だけです。
```shell
$JS7_YADE_BIN \
    -settings $YADE_XML \
    -profile $YADE_PROFILE \
    -file_path $YADE_FILE_PATH \
    -log-level debug
```
- $JS7_YADE_BIN: Defaultジョブリソースで設定されているYADEクライアントスクリプトへのパス
  eg. ``$JS7_AGENT_HOME/yade/bin/yade.sh``
- settings $YADE_XML: Filetransferジョブリソースで設定されているファイル転送定義ファイル
- profile $YADE_PROFILE: ファイル転送定義で作成したProfile名
- file_path $YADE_FILE_PATH: 送信元ファイルパス（オプション）
- log-level: Log4j2のログレベル、info, debug, trace （オプション） 

**ジョブ環境変数設定**
上記shellスクリプトで使う変数を設定します。
![スクリーンショット 2022-06-21 12.18.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52445/b96d37b4-026a-191f-df73-93917d8c3bd8.png)

以上でワークフローが作成できましたので配置し、ワークフローメニューから選択しオーダー追加します。

<details><summary>上記ワークフローのサンプルJSON（保存してワークフローアクションメニューからアップロード可能）</summary>

```json
{
  "version": "1.1.0",
  "timeZone": "Etc/UTC",
  "title": "初めてのファイル転送",
  "documentationName": "PKB-JS7-OnlineDemo-Workflow-jdTransferFiles",
  "orderPreparation": {
    "parameters": {
      "file": {
        "type": "String",
        "default": "\"/tmp/test.txt\""
      }
    },
    "allowUndeclared": false
  },
  "jobResourceNames": [
    "Default",
    "Filetransfer"
  ],
  "instructions": [
    {
      "TYPE": "Execute.Named",
      "jobName": "yade-transfer-file",
      "label": "move-transfer-file"
    }
  ],
  "jobs": {
    "yade-transfer-file": {
      "agentName": "primaryAgent",
      "executable": {
        "TYPE": "ShellScriptExecutable",
        "script": "#!/bin/sh\necho \"YADE_XML: $YADE_XML\"\necho \"using workflow: $JS7_WORKFLOW_NAME\"\necho \"running job: $JS7_JOB_NAME\"\n\nif [ ! -f \"$YADE_FILE_PATH\" ]\nthen\n  echo \"----- file does not exist: $YADE_FILE_PATH\"\n  echo \"----- use workflow jdCreateDemoYadeFiles to create files\"\n  exit 1\nfi\n\n$JS7_YADE_BIN \\\n    -settings $YADE_XML \\\n    -profile $YADE_PROFILE \\\n    -file_path $YADE_FILE_PATH \\\n    -log-level debug\n",
        "env": {
          "YADE_PROFILE": "\"sftp_demo_from224_to249\"",
          "YADE_FILE_PATH": "$file"
        },
        "v1Compatible": false
      },
      "skipIfNoAdmissionForOrderDay": false,
      "parallelism": 10,
      "graceTimeout": 15,
      "failOnErrWritten": false,
      "jobResourceNames": [
        "pdJRtransfer",
        "Default"
      ],
      "title": "Pick up files by File Watching and transfer files with YADE"
    }
  }
}

```
</details>

<details><summary>上記ワークフローのdebugログ例</summary>

```log
2022-06-21 12:23:42.685+09:00 [MAIN] [OrderStarted] id=#2022-06-21#T78182256471-root, pos=0
2022-06-21 12:23:42.777+09:00 [MAIN] [OrderProcessingStarted] id=#2022-06-21#T78182256471-root, pos=0, Job=yade-transfer-file, Agent(url=http://js7-agent-standalone:4445, name=primaryAgent, time=2022-06-21 12:23:42.685+09:00)
2022-06-21 12:23:42.685+09:00 [MAIN]    [Start] Job=yade-transfer-file, Agent (url=http://js7-agent-standalone:4445, id=js7-agent-standalone, name=primaryAgent)
2022-06-21 12:23:43.121+09:00 [STDOUT]  YADE_XML: /var/sos-berlin.com/js7/agent/var_4445/work/values/0/13.xml
using workflow: TransferFiles
running job: yade-transfer-file
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+                       START  : YADE.SH                          +
+                       ----------------                          +
+ DATE     : Tue Jun 21 03:23:42 UTC 2022                         +
+ HOSTNAME : js7-agent-standalone                                 +
+ USER     :                                                      +
+ CALL     : /var/sos-berlin.com/js7/agent/yade/bin/yade.sh -settings /var/sos-berlin.com/js7/agent/var_4445/work/values/0/13.xml -profile sftp_demo_from224_to249 -file_path /tmp/test.txt -return-values "/var/sos-berlin.com/js7/agent/var_4445/work/tmp/returnValues-3094423932504644641.tmp" +
+                                                                 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2022-06-21 12:23:45.887+09:00 [STDOUT]  03:23:45.475 [main] DEBUG com.sos.DataExchange.JadeBaseEngine - set loglevel to DEBUG due to option verbose = 3
03:23:45.490 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - load KeePass from file /var/sos-berlin.com/js7/agent/var_4445/config/demo.kdbx
03:23:45.491 [main] DEBUG com.sos.keepass.SOSKeePassDatabase - [SOSKeePassDatabase][/var/sos-berlin.com/js7/agent/var_4445/config/demo.kdbx]isKdbx=true
03:23:45.581 [main] DEBUG com.sos.keepass.SOSKeePassDatabase - [getKDBXDatabase]/var/sos-berlin.com/js7/agent/var_4445/config/demo.kdbx
2022-06-21 12:23:47.174+09:00 [STDOUT]  03:23:46.773 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - attachmentPropertyName=null
03:23:46.775 [main] DEBUG com.sos.keepass.SOSKeePassDatabase - [getEntryByPath]demo/js7centos7
03:23:46.776 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_host]set from demo/js7centos7@URL
03:23:46.776 [main] DEBUG com.sos.keepass.SOSKeePassDatabase - [getEntryByPath]demo/js7centos7
03:23:46.777 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_user]set from demo/js7centos7@UserName
03:23:46.777 [main] DEBUG com.sos.keepass.SOSKeePassDatabase - [getEntryByPath]demo/js7centos7
03:23:46.777 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_password]set from demo/js7centos7@Password
03:23:46.777 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_passphrase]skip
03:23:46.778 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_domain]skip
03:23:46.778 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_proxy_host]skip
03:23:46.778 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_proxy_user]skip
03:23:46.778 [main] DEBUG com.sos.vfs.common.options.SOSProviderOptions - [target_proxy_password]skip
03:23:46.791 [main] INFO  JadeReportLog -
************************************************************************
*                                                                      *
*                     YADE - Managed File Transfer                     *
*                     -----www.sos-berlin.com-----                     *
*                                                                      *
************************************************************************
Version                 = 1.13.13 (2022-04-06 10:55, revision 2c46be1d492247b7810c0c4f34e162a85f378702) Copyright 2003-2022 SOS GmbH Berlin
Date                    = 2022-06-21 03:23:46
SettingsFile            = /var/sos-berlin.com/js7/agent/var_4445/work/values/0/13.xml
Profile                 = sftp_demo_from224_to249
Operation               = copy
Transactional           = false
+------------Source------------
| Protocol              = local
| Host                  = js7-agent-standalone
| IP                    = 172.18.0.11
| FilePath              = /tmp/test.txt
| ErrorWhenNoFilesFound = true
| Recursive             = false
| Remove                = false
+------------Target------------
| Protocol              = sftp
| Host                  = 192.168.110.249
| IP                    = 192.168.110.249
| User                  = scheduler
| AuthMethod            = password
| Password              = ***
| Directory             = /tmp/
| OverwriteFiles        = true
03:23:46.792 [main] INFO  com.sos.DataExchange.SOSDataExchangeEngine -
************************************************************************
*                                                                      *
*                     YADE - Managed File Transfer                     *
*                     -----www.sos-berlin.com-----                     *
*                                                                      *
************************************************************************
Version                 = 1.13.13 (2022-04-06 10:55, revision 2c46be1d492247b7810c0c4f34e162a85f378702) Copyright 2003-2022 SOS GmbH Berlin
Date                    = 2022-06-21 03:23:46
SettingsFile            = /var/sos-berlin.com/js7/agent/var_4445/work/values/0/13.xml
Profile                 = sftp_demo_from224_to249
Operation               = copy
Transactional           = false
+------------Source------------
| Protocol              = local
| Host                  = js7-agent-standalone
| IP                    = 172.18.0.11
| FilePath              = /tmp/test.txt
| ErrorWhenNoFilesFound = true
| Recursive             = false
| Remove                = false
+------------Target------------
| Protocol              = sftp
| Host                  = 192.168.110.249
| IP                    = 192.168.110.249
| User                  = scheduler
| AuthMethod            = password
| Password              = ***
| Directory             = /tmp/
| OverwriteFiles        = true
03:23:46.795 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [baseOptions]
SendTransferHistory = true
source_dir =
target_dir = /tmp
file_path = /tmp/test.txt
local_dir =
operation = copy
profile = sftp_demo_from224_to249
protocol = sftp
verbose = 3
return-values = /var/sos-berlin.com/js7/agent/var_4445/work/tmp/returnValues-3094423932504644641.tmp
local_user = jobscheduler
03:23:46.796 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [baseOptions][mailOptions]
03:23:46.797 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [source]
source_protocol = local
03:23:46.797 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [target]
target_include = protocol_fragment_sftp@demo_sftp,credentialstore_fragment@demo
target_dir = /tmp
target_host = 192.168.110.249
target_port = 22
target_protocol = sftp
target_user = scheduler
target_password = *****
target_ssh_auth_method = password
target_keepass_attachment_property_name =
03:23:46.797 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [target][credential store]
target_CredentialStore_AuthenticationMethod = privatekey
target_CredentialStore_FileName = /var/sos-berlin.com/js7/agent/var_4445/config/demo.kdbx
target_CredentialStore_KeyFileName = /var/sos-berlin.com/js7/agent/var_4445/config/demo.keyx
target_CredentialStore_KeyPath = demo/js7centos7
target_use_credential_Store = true
03:23:46.818 [main] DEBUG com.sos.vfs.common.SOSVFSFactory - [target]sftp
03:23:46.834 [main] INFO  com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - [sftp]SOSVfs-D-0101: Try to connect to host '192.168.110.249' at Port '22'.
03:23:46.835 [main] DEBUG com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - user=scheduler, host=192.168.110.249, port=22
03:23:46.849 [main] DEBUG com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - [password]
03:23:46.851 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Connecting to 192.168.110.249 port 22
03:23:46.862 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Connection established
03:23:46.885 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Remote version string: SSH-2.0-OpenSSH_7.4
03:23:46.885 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Local version string: SSH-2.0-JSCH-0.1.54
03:23:46.886 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
03:23:46.982 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
03:23:47.172 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
2022-06-21 12:23:47.581+09:00 [STDOUT]  03:23:47.180 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - SSH_MSG_KEXINIT sent
03:23:47.180 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - SSH_MSG_KEXINIT received
03:23:47.180 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
03:23:47.180 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
03:23:47.180 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc
03:23:47.181 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc
03:23:47.181 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
03:23:47.181 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
03:23:47.181 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: none,zlib@openssh.com
03:23:47.181 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server: none,zlib@openssh.com
03:23:47.181 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server:
03:23:47.181 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server:
03:23:47.182 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
03:23:47.182 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
03:23:47.182 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
03:23:47.182 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
03:23:47.182 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
03:23:47.182 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
03:23:47.183 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: none
03:23:47.183 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client: none
03:23:47.183 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client:
03:23:47.183 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client:
03:23:47.183 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: server->client aes128-ctr hmac-sha1 none
03:23:47.183 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - kex: client->server aes128-ctr hmac-sha1 none
03:23:47.199 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - SSH_MSG_KEX_ECDH_INIT sent
03:23:47.199 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - expecting SSH_MSG_KEX_ECDH_REPLY
03:23:47.250 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - ssh_rsa_verify: signature true
03:23:47.263 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - SSH_MSG_NEWKEYS sent
03:23:47.263 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - SSH_MSG_NEWKEYS received
03:23:47.271 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - SSH_MSG_SERVICE_REQUEST sent
03:23:47.272 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - SSH_MSG_SERVICE_ACCEPT received
03:23:47.291 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Authentications that can continue: password
03:23:47.291 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Next authentication method: password
03:23:47.344 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Authentication succeeded (password).
03:23:47.366 [main] DEBUG com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - createSftpClient connect timeout = 0
2022-06-21 12:23:47.960+09:00 [STDOUT]  03:23:47.683 [main] INFO  com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - SOSVfs_D_133: user 'scheduler' logged in.
03:23:47.683 [main] DEBUG com.sos.vfs.common.SOSCommonProvider - OK
03:23:47.694 [main] DEBUG com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - [/tmp/]isDirectory=true
03:23:47.695 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [target][/tmp/]isDirectory=true
03:23:47.695 [main] DEBUG com.sos.vfs.common.SOSVFSFactory - [source]local
03:23:47.697 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - single file(s) specified : '/tmp/test.txt'
03:23:47.698 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [/tmp/test.txt]found
03:23:47.704 [main] INFO  com.sos.DataExchange.SOSDataExchangeEngine - 1 files found.
03:23:47.706 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - files to transfer 1
03:23:47.708 [main] DEBUG com.sos.vfs.common.SOSFileListEntry - [1]-------------------------------------
03:23:47.711 [main] DEBUG com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - [/tmp/test.txt]size=0
03:23:47.711 [main] DEBUG com.sos.vfs.common.SOSCommonProviderFile - [/tmp/test.txt]true
03:23:47.711 [main] DEBUG com.sos.vfs.common.SOSFileListEntry - [1][target][/tmp/test.txt]targetFileExistsBeforeTransfer=true
03:23:47.719 [main] INFO  com.sos.vfs.common.SOSFileListEntry - [1][transferred]Source=/tmp/test.txt, Target=/tmp/test.txt, Bytes=0 (2022-06-21 03:23:47-2022-06-21 03:23:47)0.004391s
03:23:47.720 [main] DEBUG com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - [sftp]disconnected
03:23:47.720 [main] DEBUG com.sos.vfs.sftp.jcraft.common.SOSSFTPLogger - Disconnecting from 192.168.110.249 port 22
03:23:47.733 [main] DEBUG com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - [session]disconnected
03:23:47.734 [main] INFO  com.sos.vfs.sftp.jcraft.SOSSFTPJCraft - disconnect OK
03:23:47.734 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [/tmp/sos.yade_settings_18076702533579469954.ini]settings file deleted
03:23:47.746 [main] DEBUG com.sos.DataExchange.history.YadeTransferResultHelper - [return-values]process /var/sos-berlin.com/js7/agent/var_4445/work/tmp/returnValues-3094423932504644641.tmp
03:23:47.901 [main] INFO  com.sos.DataExchange.SOSDataExchangeEngine - SOSJADE_I_0100: one file transferred (2022-06-21 03:23:45-2022-06-21 03:23:47)2.239439s
03:23:47.901 [main] INFO  JadeReportLog - SOSJADE_I_0100: one file transferred (2022-06-21 03:23:45-2022-06-21 03:23:47)2.239439s
03:23:47.907 [main] INFO  JadeReportLog -
*************************************************************************
execution status     = success. Without Errors.
successful transfers = 1
skipped transfers    = 0
failed transfers     = 0
last error           =
*************************************************************************
03:23:47.907 [main] INFO  com.sos.DataExchange.SOSDataExchangeEngine -
*************************************************************************
execution status     = success. Without Errors.
successful transfers = 1
skipped transfers    = 0
failed transfers     = 0
last error           =
*************************************************************************
03:23:47.907 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [mailOnError=false][mailOnSuccess=false][mailOnEmptyFiles=false]
03:23:47.907 [main] DEBUG com.sos.DataExchange.SOSDataExchangeEngine - [failedTransfers=0][successfulTransfers=1][successZeroByteFiles=1][skippedZeroByteFiles=0]
03:23:47.908 [main] INFO  com.sos.DataExchange.SOSDataExchangeEngineMain - execute - ended without errors
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+                         END  : YADE.SH                          +
+                         --------------                          +
+ DATE     : Tue Jun 21 03:23:47 UTC 2022                         +
+ HOSTNAME : js7-agent-standalone                                 +
+ USER     :                                                      +
+ CALL     : /var/sos-berlin.com/js7/agent/yade/bin/yade.sh -settings /var/sos-berlin.com/js7/agent/var_4445/work/values/0/13.xml -profile sftp_demo_from224_to249 -file_path /tmp/test.txt -return-values "/var/sos-berlin.com/js7/agent/var_4445/work/tmp/returnValues-3094423932504644641.tmp" +
+ EXIT     : 0                                                    +
+                                                                 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2022-06-21 12:23:47.966+09:00 [MAIN]    [End] [Success] returnCode=0
2022-06-21 12:23:48.071+09:00 [SUCCESS] [OrderProcessed] id=#2022-06-21#T78182256471-root, pos=0, Job=yade-transfer-file, Agent(time=2022-06-21 12:23:47.966+09:00), returnCode=0
2022-06-21 12:23:48.230+09:00 [MAIN] [OrderFinished] id=#2022-06-21#T78182256471-root, pos=1
```
</details>