aspera-cli 4.2.1 → 4.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +187 -127
- data/docs/Makefile +4 -4
- data/docs/README.erb.md +206 -38
- data/docs/test_env.conf +2 -1
- data/examples/faspex4.rb +28 -17
- data/lib/aspera/cli/main.rb +47 -19
- data/lib/aspera/cli/plugins/aoc.rb +5 -13
- data/lib/aspera/cli/plugins/config.rb +47 -30
- data/lib/aspera/cli/plugins/faspex.rb +90 -52
- data/lib/aspera/cli/plugins/faspex5.rb +8 -7
- data/lib/aspera/cli/plugins/preview.rb +29 -25
- data/lib/aspera/cli/transfer_agent.rb +71 -44
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/command_line_builder.rb +49 -31
- data/lib/aspera/fasp/parameters.rb +57 -87
- data/lib/aspera/fasp/parameters.yaml +531 -0
- data/lib/aspera/fasp/uri.rb +1 -1
- data/lib/aspera/oauth.rb +4 -4
- data/lib/aspera/sync.rb +40 -35
- metadata +17 -3
- data/docs/transfer_spec.html +0 -99
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69d9db9ef64b0b49f9a0dc83949bc1dbff6934dc158132e4bce6b8fc12a8d0bd
|
4
|
+
data.tar.gz: 60a1d6b8cbf0b0d2f7128f8131d31a94166a856eb17197db3578d3aa0e760dff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a918f2f400041eff1655d97829ff5cf64d52a09e1223032823891205cbdeba8109619fd43f9b8ebc7d55022b6e0b72b0f935c357be4b58cfd3a85343431f830
|
7
|
+
data.tar.gz: 4927dabefd461997ea0ff07a8a4c2034f767a5925bac6c88faa4370e34d62f1fbca31ba2e8a65ebf723a168da9974c8aacfa8da5662087151f32df1f9e71d4d7
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
[comment1]: # (Do not edit this README.md, edit docs/README.erb.md, for details, read docs/README.md)
|
2
2
|
# `ascli` : Command Line Interface for IBM Aspera products
|
3
3
|
|
4
|
-
Version : 4.2.
|
4
|
+
Version : 4.2.2
|
5
5
|
|
6
6
|
_Laurent/2016-2021_
|
7
7
|
|
@@ -81,7 +81,7 @@ Once the gem is installed, `ascli` shall be accessible:
|
|
81
81
|
|
82
82
|
```
|
83
83
|
$ ascli --version
|
84
|
-
4.2.
|
84
|
+
4.2.2
|
85
85
|
```
|
86
86
|
|
87
87
|
## First use
|
@@ -1267,97 +1267,31 @@ A [_transfer-spec_](#transferspec) is a Hash table, so it is described on the co
|
|
1267
1267
|
|
1268
1268
|
## <a name="transferparams"></a>Transfer Parameters
|
1269
1269
|
|
1270
|
-
All standard _transfer-spec_ parameters can be
|
1271
|
-
|
1272
|
-
also be saved/overridden in the config file.
|
1270
|
+
All standard _transfer-spec_ parameters can be speficied.
|
1271
|
+
[_transfer-spec_](#transferspec) can also be saved/overridden in the config file.
|
1273
1272
|
|
1273
|
+
References:
|
1274
|
+
|
1275
|
+
* [Aspera Node API Documentation](https://developer.ibm.com/apis/catalog?search=%22aspera%20node%20api%22)→/opt/transfers
|
1276
|
+
* [Aspera Transfer SDK Documentation](https://developer.ibm.com/apis/catalog?search=%22aspera%20transfer%20sdk%22)→Guides→API Ref→Transfer Spec V1
|
1277
|
+
|
1278
|
+
Parameters can be displayed with commands:
|
1279
|
+
|
1280
|
+
```
|
1281
|
+
$ ascli config ascp spec
|
1282
|
+
$ ascli config ascp spec --select=@json:'{"f":"Y"}' --fields=-f,n,c
|
1283
|
+
```
|
1274
1284
|
|
1275
|
-
<p>
|
1276
1285
|
Columns:
|
1277
|
-
<ul>
|
1278
|
-
<li>F=Fasp Manager(local FASP execution)</li>
|
1279
|
-
<li>N=remote node(node API)</li>
|
1280
|
-
<li>C=Connect Client(web plugin)</li>
|
1281
|
-
</ul>
|
1282
|
-
</p>
|
1283
|
-
<p>
|
1284
|
-
Req/Def : Required or default value (- means emty)
|
1285
|
-
</p>
|
1286
|
-
<p>
|
1287
|
-
Fields with EX_ prefix are specific extensions to local mode.
|
1288
|
-
</p>
|
1289
|
-
<p>
|
1290
|
-
arg: related ascp argument or env var suffix (PASS for ASPERA_SCP_PASS)
|
1291
|
-
</p>
|
1292
|
-
<p>
|
1293
|
-
UNDER CONSTRUCTION<br/>
|
1294
|
-
<a href="https://developer.ibm.com/apis/catalog/?search=aspera">Aspera API Documentation</a>→Node API→/opt/transfers<br/>
|
1295
|
-
</p>
|
1296
1286
|
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
<tr><td>remote_user</td><td>Required</td><td>string</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--user</td><td>Remote user. Default value is "xfer" on node or connect.</td></tr>
|
1302
|
-
<tr><td>destination_root</td><td>Required</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>last arg</td><td>Destination root directory.</td></tr>
|
1303
|
-
<tr><td>title</td><td>-</td><td>string</td><td class="no">N</td><td class="yes">Y</td><td class="yes">Y</td><td>-</td><td>Title of the transfer</td></tr>
|
1304
|
-
<tr><td>tags</td><td>-</td><td>hash</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--tags<br>--tags64</td><td>Metadata for transfer</td></tr>
|
1305
|
-
<tr><td>token</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>TOKEN<br/>-W</td><td>Authorization token: Bearer, Basic or ATM</td></tr>
|
1306
|
-
<tr><td>cookie</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>COOKIE</td><td>Metadata for transfer (older,string)</td></tr>
|
1307
|
-
<tr><td>remote_access_key</td><td>TODO</td><td>string</td><td></td><td></td><td></td><td>?</td><td>Node only?</td></tr>
|
1308
|
-
<tr><td>source_root</td><td>-</td><td>string</td><td></td><td></td><td></td><td>--source-prefix<br/>--source-prefix64</td><td>Source root directory.(TODO: verify option)</td></tr>
|
1309
|
-
<tr><td>fasp_port</td><td>33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-O</td><td>Specifies fasp (UDP) port.</td></tr>
|
1310
|
-
<tr><td>ssh_port</td><td>22 or 33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-P</td><td>Specifies ssh (TCP) port.</td></tr>
|
1311
|
-
<tr><td>rate_policy</td><td>server config</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--policy</td><td>Valid literals include "low","fair","high" and "fixed".</td></tr>
|
1312
|
-
<tr><td>symlink_policy</td><td>follow</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--symbolic-links</td><td>copy, follow, copy+force, skip. Default is follow. Handle source side symbolic links by following the link (follow), copying the link itself (copy), skipping (skip), or forcibly copying the link itself (copy+force).</td></tr>
|
1313
|
-
<tr><td>target_rate_kbps</td><td>-</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-l</td><td>Specifies desired speed for the transfer.</td></tr>
|
1314
|
-
<tr><td>min_rate_kbps</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-m</td><td>Set the minimum transfer rate in kilobits per second.</td></tr>
|
1315
|
-
<tr><td>cipher</td><td>none</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-c</td><td>in transit encryption type.<br/>none, aes-128, aes-256</td></tr>
|
1316
|
-
<tr><td>content_protection</td><td>encrypt<br/>decrypt</td><td>string</td><td></td><td></td><td></td><td>--file-crypt=</td><td>encryption at rest</td></tr>
|
1317
|
-
<tr><td>content_protection_password</td><td>-</td><td>string</td><td></td><td></td><td></td><td>PASS</td><td>Specifies a string password.</td></tr>
|
1318
|
-
<tr><td>overwrite</td><td>diff</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--overwrite</td><td>Overwrite destination files with the source files of the same name.<br/>never, always, diff, older, or diff+older</td></tr>
|
1319
|
-
<tr><td>retry_duration</td><td></td><td>string</td><td></td><td></td><td></td><td>TODO</td><td>Specifies how long to wait before retrying transfer. (e.g. "5min")</td></tr>
|
1320
|
-
<tr><td>http_fallback</td><td></td><td>bool (node), integer</td><td></td><td></td><td></td><td>-y<br/>TODO</td><td>When true(1), attempts to perform an HTTP transfer if a fasp transfer cannot be performed.</td></tr>
|
1321
|
-
<tr><td>create_dir</td><td></td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-d</td><td>Specifies whether to create new directories.</td></tr>
|
1322
|
-
<tr><td>precalculate_job_size</td><td>srv. def.</td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--precalculate-job-size</td><td>Specifies whether to precalculate the job size.</td></tr>
|
1323
|
-
<tr><td>delete_source</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>?</td></tr>
|
1324
|
-
<tr><td>remove_after_transfer</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove file after transfer.</td></tr>
|
1325
|
-
<tr><td>remove_empty_directories</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove empty directories.</td></tr>
|
1326
|
-
<tr><td>multi_session</td><td>1</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-C</td><td>Specifies how many parts the transfer is in.</td></tr>
|
1327
|
-
<tr><td>multi_session_threshold</td><td>null</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-</td><td>in bytes</td></tr>
|
1328
|
-
<tr><td>exclude_newer_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-newer-than</td><td>-</td></tr>
|
1329
|
-
<tr><td>exclude_older_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-older-than</td><td>-</td></tr>
|
1330
|
-
<tr><td>preserve_acls</td><td></td><td>string</td><td class="yes">Y</td><td></td><td></td><td>--preserve-acls</td><td>-</td></tr>
|
1331
|
-
<tr><td>dgram_size</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-Z</td><td>in bytes</td></tr>
|
1332
|
-
<tr><td>compression</td><td></td><td>integer</td><td></td><td></td><td></td><td></td><td>ascp4 only, 0 / 1?</td></tr>
|
1333
|
-
<tr><td>read_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
|
1334
|
-
<tr><td>write_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
|
1335
|
-
<tr><td>use_ascp4</td><td>false</td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>-</td><td>specify version of protocol</td></tr>
|
1336
|
-
<tr><td>paths</td><td>source files (dest)</td><td>array</td><td></td><td></td><td></td><td>positional<br/>--file-list<br/>--file-pair-list</td><td>Contains a path to the source (required) and a path to the destination.</td></tr>
|
1337
|
-
<tr><td>http_fallback_port</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-t</td><td>Specifies http port.</td></tr>
|
1338
|
-
<tr><td>https_fallback_port</td><td></td><td>integer</td><td></td><td></td><td></td><td>todo</td><td>Specifies https port.</td></tr>
|
1339
|
-
<tr><td>cipher_allowed</td><td></td><td>string</td><td></td><td></td><td></td><td>-</td><td>returned by node API. Valid literals include "aes-128" and "none".</td></tr>
|
1340
|
-
<tr><td>target_rate_cap_kbps</td><td></td><td></td><td class="no">N</td><td class="no">?</td><td class="yes">?</td><td>-</td><td>Returned by upload/download_setup node api.</td></tr>
|
1341
|
-
<tr><td>rate_policy_allowed</td><td></td><td></td><td></td><td></td><td></td><td>-</td><td>returned by node API. Specifies most aggressive rate policy that is allowed. Valid literals include "low", "fair","high" and "fixed".</td></tr>
|
1342
|
-
<tr><td>ssh_private_key</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>KEY</td><td>Private key used for SSH authentication, Shall look like: `-----BEGIN RSA PRIVATE KEY-----\nMII`<br/>Note the JSON encoding `\` + `n` for newlines.</td></tr>
|
1343
|
-
<tr><td>remote_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>PASS</td><td>SSH session password</td></tr>
|
1344
|
-
<tr><td>resume_policy</td><td>faspmgr:<br/>none<br/>other:<br/>sparse_csum</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-k</td><td>none,attrs,sparse_csum,full_csum</td></tr>
|
1345
|
-
<tr><td>authentication</td><td>-</td><td class="no">N</td><td class="no">N</td><td class="yes">Y</td><td>-</td><td>token: Aspera web keys are provided to allow transparent web based session initiation. on connect: password is not asked. Else, password is asked, and keys are not provided.</td></tr>
|
1346
|
-
<tr><td>EX_ssh_key_paths</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-i</td><td>Use public key authentication and specify the private key file</td></tr>
|
1347
|
-
<tr><td>EX_at_rest_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>FILEPASS</td><td>Passphrase used for at rest encryption or decryption</td></tr>
|
1348
|
-
<tr><td>EX_proxy_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>PROXY_PASS</td><td>TODO</td></tr>
|
1349
|
-
<tr><td>EX_fasp_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--proxy</td><td>Specify the address of the Aspera high-speed proxy server</td></tr>
|
1350
|
-
<tr><td>EX_http_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-x</td><td>Specify the proxy server address used by HTTP Fallback</td></tr>
|
1351
|
-
<tr><td>EX_ascp_args</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>same</td><td>Add command line arguments to ascp</td></tr>
|
1352
|
-
<tr><td>EX_http_transfer_jpeg</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-j</td><td>HTTP transfers as JPEG file</td></tr>
|
1353
|
-
<tr><td>EX_license_text</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>LICENSE</td><td>license file text</td></tr>
|
1354
|
-
<tr><td>EX_file_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-list</td><td>source file list</td></tr>
|
1355
|
-
<tr><td>EX_file_pair_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-pair-list</td><td>source file pair list</td></tr>
|
1356
|
-
<tr><td>EX_multi_session_part</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-C</td><td>part for multisession</td></tr>
|
1357
|
-
<tr><td>EX_no_read</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-read</td><td>no read source</td></tr>
|
1358
|
-
<tr><td>EX_no_write</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-write</td><td>no write estination</td></tr>
|
1359
|
-
</table>
|
1287
|
+
* D=Direct (local `ascp` execution)
|
1288
|
+
* N=Node API
|
1289
|
+
* C=Connect Client
|
1290
|
+
* arg=`ascp` argument or environment variable
|
1360
1291
|
|
1292
|
+
Fields with EX_ prefix are extensions to transfer agent `direct`. (only in `ascli`).
|
1293
|
+
|
1294
|
+
<table><tr><th>Field</th><th>Type</th><th>D</th><th>N</th><th>C</th><th>Description</th></tr><tr><td>cipher</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>In transit encryption type.<br/>none, aes-128, aes-256<br/>Allowed values: aes128, aes192, aes256, aes128cfb, aes192cfb, aes256cfb, aes128gcm, aes192gcm, aes256gcm<br/>(-c)</td></tr><tr><td>content_protection</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Enable client-side content protection. (encryption at rest)<br/>Allowed values: encrypt, decrypt</td></tr><tr><td>content_protection_password</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies CSEAR password.</td></tr><tr><td>cookie</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Metadata for transfer (older,string)<br/>(env:ASPERA_SCP_COOKIE)</td></tr><tr><td>create_dir</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies whether to create new directories.<br/>(-d)</td></tr><tr><td>delete_before_transfer</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--delete-before-transfer)</td></tr><tr><td>delete_source</td><td>bool</td><td> </td><td>Y</td><td> </td><td>Remove SRC files after transfer success</td></tr><tr><td>direction</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode)</td></tr><tr><td>exclude_newer_than</td><td>int</td><td>Y</td><td> </td><td> </td><td>skip src files with mtime > arg<br/>(--exclude-newer-than)</td></tr><tr><td>exclude_older_than</td><td>int</td><td>Y</td><td> </td><td> </td><td>skip src files with mtime < arg<br/>(--exclude-older-than)</td></tr><tr><td>fasp_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies fasp (UDP) port.<br/>(-O)</td></tr><tr><td>http_fallback</td><td>string<br/>bool</td><td>Y</td><td>Y</td><td>Y</td><td>When true(1), attempts to perform an HTTP transfer if a fasp transfer cannot be performed.<br/>(-y)</td></tr><tr><td>http_fallback_port</td><td>int</td><td>Y</td><td> </td><td> </td><td>Specifies http port.<br/>(-t)</td></tr><tr><td>https_fallback_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies https port.</td></tr><tr><td>move_after_transfer</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>(--move-after-transfer)</td></tr><tr><td>multi_session</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Use multi-session transfer. max 128.<br/> Each participant on one host needs an independent UDP (-O) port.<br/> Large files are split between sessions only when transferring with resume_policy=none.</td></tr><tr><td>multi_session_threshold</td><td>int</td><td>Y</td><td>Y</td><td> </td><td>in bytes<br/>(--multi-session-threshold)</td></tr><tr><td>overwrite</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Overwrite destination files with the source files of the same name.<br/>Allowed values: never, always, diff, older, diff+older<br/>(--overwrite)</td></tr><tr><td>paths</td><td>array</td><td>Y</td><td>Y</td><td>Y</td><td>Required. Contains a path to the source (required) and a path to the destination.</td></tr><tr><td>precalculate_job_size</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies whether to precalculate the job size.<br/>(--precalculate-job-size)</td></tr><tr><td>preserve_access_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-access-time)</td></tr><tr><td>preserve_creation_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-creation-time)</td></tr><tr><td>preserve_modification_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-modification-time)</td></tr><tr><td>preserve_times</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-times)</td></tr><tr><td>rate_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>The transfer rate policy to use when sharing bandwidth.<br/>Allowed values: low, fair, high, fixed<br/>(--policy)</td></tr><tr><td>remote_access_key</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Node only?</td></tr><tr><td>remote_host</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>IP or fully qualified domain name of the remote server<br/>(--host)</td></tr><tr><td>remote_user</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Remote user. Default value is "xfer" on node or connect.<br/>(--user)</td></tr><tr><td>remote_password</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>SSH session password<br/>(env:ASPERA_SCP_PASS)</td></tr><tr><td>remove_after_transfer</td><td>bool</td><td>Y</td><td>Y</td><td> </td><td>Remove SRC files after transfer success<br/>(--remove-after-transfer)</td></tr><tr><td>remove_empty_directories</td><td>bool</td><td>Y</td><td>Y</td><td> </td><td>Specifies whether to remove empty directories.<br/>(--remove-empty-directories)</td></tr><tr><td>proxy</td><td>string</td><td>Y</td><td> </td><td> </td><td>Specify the address of the Aspera high-speed proxy server.<br/> dnat(s)://[user[:password]@]server:port<br/> Default ports for DNAT and DNATS protocols are 9091 and 9092.<br/> Password, if specified here, overrides the value of environment variable ASPERA_PROXY_PASS.<br/>(--proxy)</td></tr><tr><td>resume_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>If a transfer is interrupted or fails to finish, resume without re-transferring the whole files.<br/>Allowed values: none, attrs, sparse_csum, full_csum<br/>(-k)</td></tr><tr><td>retry_duration</td><td>string<br/>int</td><td> </td><td>Y</td><td>Y</td><td>Specifies how long to wait before retrying transfer. (e.g. "5min")</td></tr><tr><td>ssh_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies ssh (TCP) port. Default: local:22, other:33001<br/>(-P)</td></tr><tr><td>ssh_private_key</td><td>string</td><td>Y</td><td> </td><td> </td><td>Private key used for SSH authentication.<br/> Shall look like: -----BEGIN RSA PRIVATE KEY-----\nMII...<br/> Note the JSON encoding: \n for newlines.<br/>(env:ASPERA_SCP_KEY)</td></tr><tr><td>symlink_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Handle source side symbolic links by:<br/> following the link (follow),<br/> copying the link itself (copy),<br/> skipping (skip),<br/> or forcibly copying the link itself (copy+force).<br/> Default: follow<br/>Allowed values: follow, copy, copy+force, skip<br/>(--symbolic-links)</td></tr><tr><td>tags</td><td>hash</td><td>Y</td><td>Y</td><td>Y</td><td>Metadata for transfer<br/>(--tags64)</td></tr><tr><td>target_rate_cap_kbps</td><td>int</td><td> </td><td> </td><td>Y</td><td>Returned by upload/download_setup node api.</td></tr><tr><td>target_rate_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies desired speed for the transfer.<br/>(-l)</td></tr><tr><td>title</td><td>string</td><td> </td><td>Y</td><td>Y</td><td>Title of the transfer</td></tr><tr><td>token</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN)</td></tr><tr><td>use_ascp4</td><td>bool</td><td>Y</td><td>Y</td><td> </td><td>specify version of protocol</td></tr><tr><td>destination_root</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Destination root directory.</td></tr><tr><td>source_root</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Path to be prepended to each source path.<br/> This is either a conventional path or it can be a URI but only if there is no root defined.<br/>(--source-prefix64)</td></tr><tr><td>min_rate_cap_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_rate_policy</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_target_rate_kbps</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_min_rate_kbps</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>apply_local_docroot</td><td>bool</td><td>Y</td><td> </td><td> </td><td>(--apply-local-docroot)</td></tr><tr><td>preserve_acls</td><td>string</td><td>Y</td><td> </td><td> </td><td>Preserve access control lists.<br/>Allowable values: none, native, metafile<br/>(--preserve-acls)</td></tr><tr><td>remove_empty_source_directory</td><td>bool</td><td>Y</td><td> </td><td> </td><td>TODO: check node, sdk<br/>(--remove-empty-source-directory)</td></tr><tr><td>EX_at_rest_password</td><td>string</td><td>Y</td><td> </td><td> </td><td>Passphrase used for at rest encryption or decryption<br/>(env:ASPERA_SCP_FILEPASS)</td></tr><tr><td>EX_proxy_password</td><td>string</td><td>Y</td><td> </td><td> </td><td>Password used for Aspera proxy server authentication.<br/> May be overridden by password in URL EX_fasp_proxy_url.<br/>(env:ASPERA_PROXY_PASS)</td></tr><tr><td>EX_license_text</td><td>string</td><td>Y</td><td> </td><td> </td><td>License file text override.<br/>By default ascp looks for license file near executable.<br/>(env:ASPERA_SCP_LICENSE)</td></tr><tr><td>dgram_size</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>in bytes<br/>(-Z)</td></tr><tr><td>min_rate_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Set the minimum transfer rate in kilobits per second.<br/>(-m)</td></tr><tr><td>sshfp</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Check it against server SSH host key fingerprint<br/>(--check-sshfp)</td></tr><tr><td>EX_http_proxy_url</td><td>string</td><td>Y</td><td> </td><td> </td><td>Specify the proxy server address used by HTTP Fallback<br/>(-x)</td></tr><tr><td>EX_ssh_key_paths</td><td>array</td><td>Y</td><td> </td><td> </td><td>Use public key authentication for SSH and specify the private key file paths<br/>(-i)</td></tr><tr><td>EX_http_transfer_jpeg</td><td>int</td><td>Y</td><td> </td><td> </td><td>HTTP transfers as JPEG file<br/>(-j)</td></tr><tr><td>EX_no_read</td><td>bool</td><td>Y</td><td> </td><td> </td><td>no read source<br/>(--no-read)</td></tr><tr><td>EX_no_write</td><td>bool</td><td>Y</td><td> </td><td> </td><td>no write on destination<br/>(--no-write)</td></tr><tr><td>target_rate_percentage</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>rate_policy_allowed</td><td>string</td><td> </td><td> </td><td>Y</td><td>Specifies most aggressive rate policy that is allowed.<br/> Returned by node API.<br/>Allowed values: low, fair, high, fixed</td></tr><tr><td>lock_min_rate</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_target_rate</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>authentication</td><td>string</td><td> </td><td> </td><td>Y</td><td>value=token for SSH bypass keys, else password asked if not provided.</td></tr><tr><td>cipher_allowed</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>returned by node API. Valid literals include "aes-128" and "none".</td></tr><tr><td>EX_file_list</td><td>string</td><td>Y</td><td> </td><td> </td><td>source file list</td></tr><tr><td>EX_file_pair_list</td><td>string</td><td>Y</td><td> </td><td> </td><td>source file pair list</td></tr><tr><td>EX_ascp_args</td><td>array</td><td>Y</td><td> </td><td> </td><td>Add command line arguments to ascp</td></tr><tr><td>wss_enabled</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>wss_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr></table>
|
1361
1295
|
|
1362
1296
|
### Destination folder for transfers
|
1363
1297
|
|
@@ -1439,7 +1373,7 @@ Source files are located on "Aspera on cloud", when :
|
|
1439
1373
|
|
1440
1374
|
### <a name="multisession"></a>Support of multi-session
|
1441
1375
|
|
1442
|
-
Multi session, i.e. starting a transfer of a file set using multiple sessions is supported on "direct" and "node" agents, not yet on connect.
|
1376
|
+
Multi session, i.e. starting a transfer of a file set using multiple sessions (one ascp process per session) is supported on "direct" and "node" agents, not yet on connect.
|
1443
1377
|
|
1444
1378
|
* when agent=node :
|
1445
1379
|
|
@@ -1460,6 +1394,7 @@ shall be preferred.
|
|
1460
1394
|
|
1461
1395
|
Multi-session spawn is done by `ascli`.
|
1462
1396
|
|
1397
|
+
When multi-session is used, one separate UDP port is used per session (refer to `ascp` manual page).
|
1463
1398
|
|
1464
1399
|
### Examples
|
1465
1400
|
|
@@ -1508,7 +1443,7 @@ ascli
|
|
1508
1443
|
ascli -h
|
1509
1444
|
ascli aoc -N remind --username=my_aoc_user_email
|
1510
1445
|
ascli aoc -N servers
|
1511
|
-
ascli aoc admin analytics transfers --query=@json:'{"status":"completed","direction":"receive"}'
|
1446
|
+
ascli aoc admin analytics transfers --query=@json:'{"status":"completed","direction":"receive"}' --notif-to=my_recipient_email --notif-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
|
1512
1447
|
ascli aoc admin ats access_key --id=akibmcloud --secret=somesecret node browse /
|
1513
1448
|
ascli aoc admin ats access_key --id=akibmcloud delete
|
1514
1449
|
ascli aoc admin ats access_key create --cloud=aws --region=my_aws_bucket_region --params=@json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_aws_bucket_name","credentials":{"access_key_id":"my_aws_bucket_key","secret_access_key":"my_aws_bucket_secret"},"path":"/"}}'
|
@@ -1613,7 +1548,7 @@ ascli config ascp show
|
|
1613
1548
|
ascli config check_update
|
1614
1549
|
ascli config doc
|
1615
1550
|
ascli config doc transfer-parameters
|
1616
|
-
ascli config email_test
|
1551
|
+
ascli config email_test --notif-to=my_recipient_email
|
1617
1552
|
ascli config export
|
1618
1553
|
ascli config genkey mykey
|
1619
1554
|
ascli config plugins
|
@@ -1709,7 +1644,7 @@ ascli server mkdir folder_1/target_hot
|
|
1709
1644
|
ascli server mv folder_1/200KB.2 folder_1/to.delete
|
1710
1645
|
ascli server upload --sources=@ts --ts=@json:'{"paths":[{"source":"testfile.bin","destination":"NEW_SERVER_FOLDER/othername"}]}'
|
1711
1646
|
ascli server upload --src-type=pair --sources=@json:'["testfile.bin","NEW_SERVER_FOLDER/othername"]'
|
1712
|
-
ascli server upload --src-type=pair testfile.bin NEW_SERVER_FOLDER/othername
|
1647
|
+
ascli server upload --src-type=pair testfile.bin NEW_SERVER_FOLDER/othername --notif-to=my_recipient_email
|
1713
1648
|
ascli server upload --to-folder=folder_1/target_hot --lock-port=12345 --ts=@json:'{"EX_ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","source_hot"]}' source_hot
|
1714
1649
|
ascli server upload testfile.bin --to-folder=NEW_SERVER_FOLDER --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":1500}' --transfer-info=@json:'{"spawn_delay_sec":2.5}' --progress=multi
|
1715
1650
|
ascli shares admin share list
|
@@ -1734,7 +1669,7 @@ ascli sync start --parameters=@json:'{"sessions":[{"name":"test","reset":true,"r
|
|
1734
1669
|
```
|
1735
1670
|
$ ascli -h
|
1736
1671
|
NAME
|
1737
|
-
ascli -- a command line tool for Aspera Applications (v4.2.
|
1672
|
+
ascli -- a command line tool for Aspera Applications (v4.2.2)
|
1738
1673
|
|
1739
1674
|
SYNOPSIS
|
1740
1675
|
ascli COMMANDS [OPTIONS] [ARGS]
|
@@ -1805,6 +1740,8 @@ OPTIONS:
|
|
1805
1740
|
--secrets=VALUE secret repository (Hash)
|
1806
1741
|
--sdk-url=VALUE URL to get SDK
|
1807
1742
|
--sdk-folder=VALUE SDK folder location
|
1743
|
+
--notif-to=VALUE email recipient for notification of transfers
|
1744
|
+
--notif-template=VALUE email ERB template for notification of transfers
|
1808
1745
|
--test-mode=ENUM skip user validation in wizard mode: yes, no
|
1809
1746
|
--version-check-days=VALUE period to check neew version in days (zero to disable)
|
1810
1747
|
--ts=VALUE override transfer spec values (Hash, use @json: prefix), current={"create_dir"=>true}
|
@@ -1913,7 +1850,7 @@ OPTIONS:
|
|
1913
1850
|
--source-name=VALUE create package from remote source (by name)
|
1914
1851
|
--storage=VALUE Faspex local storage definition
|
1915
1852
|
--recipient=VALUE use if recipient is a dropbox (with *)
|
1916
|
-
--box=ENUM package box: inbox,
|
1853
|
+
--box=ENUM package box: inbox, archive, sent
|
1917
1854
|
|
1918
1855
|
|
1919
1856
|
COMMAND: shares2
|
@@ -1987,7 +1924,6 @@ OPTIONS:
|
|
1987
1924
|
--new-user-option=VALUE new user creation option
|
1988
1925
|
--from-folder=VALUE share to share source folder
|
1989
1926
|
--scope=VALUE OAuth scope for AoC API calls
|
1990
|
-
--notify=VALUE notify users that file was received
|
1991
1927
|
--bulk=ENUM bulk operation: yes, no
|
1992
1928
|
--default-ports=ENUM use standard FASP ports or get from node api: yes, no
|
1993
1929
|
|
@@ -2234,7 +2170,7 @@ To activate default use of JWT authentication for `ascli` using the [option pres
|
|
2234
2170
|
|
2235
2171
|
* change auth method to JWT
|
2236
2172
|
* provide location of private key
|
2237
|
-
* provide username to login as (
|
2173
|
+
* provide username to login as (OAuth "subject")
|
2238
2174
|
|
2239
2175
|
Execute:
|
2240
2176
|
|
@@ -2645,19 +2581,40 @@ The activity app can be queried with:
|
|
2645
2581
|
$ ascli aoc admin analytics transfers
|
2646
2582
|
```
|
2647
2583
|
|
2648
|
-
It can also support filters and send notification
|
2584
|
+
It can also support filters and send notification using option `notif_to`. a template is defined using option `notif_template` :
|
2585
|
+
|
2586
|
+
`mytemplate.erb`:
|
2587
|
+
|
2588
|
+
```
|
2589
|
+
From: <%=from_name%> <<%=from_email%>>
|
2590
|
+
To: <<%=ev['user_email']%>>
|
2591
|
+
Subject: <%=ev['files_completed']%> files received
|
2592
|
+
|
2593
|
+
Dear <%=ev[:user_email.to_s]%>,
|
2594
|
+
We received <%=ev['files_completed']%> files for a total of <%=ev['transferred_bytes']%> bytes, starting with file:
|
2595
|
+
<%=ev['content']%>
|
2596
|
+
|
2597
|
+
Thank you.
|
2598
|
+
```
|
2599
|
+
The environment provided contains the following additional variable:
|
2600
|
+
|
2601
|
+
* ev : all details on the transfer event
|
2602
|
+
|
2603
|
+
Example:
|
2649
2604
|
|
2650
2605
|
```
|
2651
|
-
$ ascli aoc admin analytics transfers --once-only=yes --lock-port=
|
2606
|
+
$ ascli aoc admin analytics transfers --once-only=yes --lock-port=12345 \
|
2652
2607
|
--query=@json:'{"status":"completed","direction":"receive"}' \
|
2653
|
-
--
|
2608
|
+
--notif-to=active --notif-template=@file:mytemplate.erb
|
2654
2609
|
```
|
2655
2610
|
|
2611
|
+
Options:
|
2612
|
+
|
2656
2613
|
* `once_only` keep track of last date it was called, so next call will get only new events
|
2657
2614
|
* `query` filter (on API call)
|
2658
2615
|
* `notify` send an email as specified by template, this could be places in a file with the `@file` modifier.
|
2659
2616
|
|
2660
|
-
Note this must not be executed in less than 5 minutes because the analytics interface accepts only a period of time between 5 minutes and 6 months.
|
2617
|
+
Note this must not be executed in less than 5 minutes because the analytics interface accepts only a period of time between 5 minutes and 6 months. The period is [date of previous execution]..[now].
|
2661
2618
|
|
2662
2619
|
## Using specific transfer ports
|
2663
2620
|
|
@@ -2908,11 +2865,15 @@ $ ascli node access_key create --value=@json:'{"id":"eudemo-sedemo","secret":"my
|
|
2908
2865
|
|
2909
2866
|
3 authentication methods are supported:
|
2910
2867
|
|
2911
|
-
* boot
|
2912
|
-
* web
|
2913
2868
|
* jwt
|
2869
|
+
* web
|
2870
|
+
* boot
|
2871
|
+
|
2872
|
+
For JWT, create an API client in Faspex with jwt support, and use: `--auth=jwt`.
|
2873
|
+
|
2874
|
+
For web method, create an API client in Faspex, and use: --auth=web
|
2914
2875
|
|
2915
|
-
For boot method:
|
2876
|
+
For boot method: (will be removed in future)
|
2916
2877
|
|
2917
2878
|
* open a browser
|
2918
2879
|
* start developer mode
|
@@ -2925,25 +2886,57 @@ Use it as password and use `--auth=boot`.
|
|
2925
2886
|
$ ascli conf id f5boot update --url=https://localhost/aspera/faspex --auth=boot --password=ABC.DEF.GHI...
|
2926
2887
|
```
|
2927
2888
|
|
2928
|
-
For web method, create an API client in Faspex, and use: --auth=web
|
2929
|
-
|
2930
|
-
For JWT, create an API client in Faspex with jwt supporot, and use: --auth=jwt
|
2931
|
-
as of beta£3 this does not allow regular users.
|
2932
|
-
|
2933
2889
|
Ready to use Faspex5 with CLI.
|
2934
2890
|
|
2935
|
-
Once the graphical registration form exist, ther bootstrap method can be removed.
|
2936
|
-
|
2937
2891
|
# Plugin: IBM Aspera Faspex (4.x)
|
2938
2892
|
|
2939
2893
|
Notes:
|
2940
2894
|
|
2941
|
-
*
|
2942
|
-
*
|
2895
|
+
* The command "v4" requires the use of APIv4, refer to the Faspex Admin manual on how to activate.
|
2896
|
+
* For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
|
2897
|
+
|
2898
|
+
## Listing Packages
|
2899
|
+
|
2900
|
+
Command: `faspex package list`
|
2901
|
+
|
2902
|
+
### Option `box`
|
2903
|
+
|
2904
|
+
By default it looks in box `inbox`, but the following boxes are also supported: `archive` and `sent`, selected with option `box`.
|
2905
|
+
|
2906
|
+
### Option `recipient`
|
2907
|
+
|
2908
|
+
A user can receive a package because the recipient is:
|
2909
|
+
|
2910
|
+
* the user himself (default)
|
2911
|
+
* the user is part of a dropbox or a workgroup (select with option `recipient` with value `*<name of WG or DB>`
|
2912
|
+
|
2913
|
+
### Option `query`
|
2914
|
+
|
2915
|
+
As inboxes may be large, it is possible to use the following query parameters:
|
2916
|
+
|
2917
|
+
* `count` : (native) number items in one API call (default=0, equivalent to 10)
|
2918
|
+
* `page` : (native) id of page in call (default=0)
|
2919
|
+
* `startIndex` : (native) index of item to start, default=0, oldest index=0
|
2920
|
+
* `max` : maximum number of items
|
2921
|
+
* `pmax` : maximum number of pages
|
2922
|
+
|
2923
|
+
(SQL query is `LIMIT <startIndex>, <count>`)
|
2924
|
+
|
2925
|
+
The API is listed in [Faspex 4 API Reference](https://developer.ibm.com/apis/catalog/?search=faspex) under "Services (API v.3)".
|
2926
|
+
|
2927
|
+
If no parameter `max` or `pmax` is provided, then all packages will be listed in the inbox, which result in paged API calls (using parameter: `count` and `page`). By default page is `0` (`10`), it can be increased to have less calls.
|
2928
|
+
|
2929
|
+
### Example
|
2930
|
+
|
2931
|
+
```
|
2932
|
+
$ ascli faspex package list --box=inbox --recipient='*my_dropbox' --query=@json:'{"max":20,"pmax":2,"count":20}'
|
2933
|
+
```
|
2934
|
+
|
2935
|
+
List a maximum of 20 items grouped by pages of 20, with maximum 2 pages in received box (inbox) when received in dropbox `*my_dropbox`.
|
2943
2936
|
|
2944
2937
|
## Receiving a Package
|
2945
2938
|
|
2946
|
-
The command is `package recv`, possible
|
2939
|
+
The command is `package recv`, possible methods are:
|
2947
2940
|
|
2948
2941
|
* provide a package id with option `id`
|
2949
2942
|
* provide a public link with option `link`
|
@@ -2960,7 +2953,7 @@ If the package is in a specific dropbox, add option `recipient` for both the `li
|
|
2960
2953
|
$ ascli faspex package list --recipient='*thedropboxname'
|
2961
2954
|
```
|
2962
2955
|
|
2963
|
-
|
2956
|
+
if `id` is set to `ALL`, then all packages are downloaded, and if option `once_only`is used, then a persistency file is created to keep track of already downloaded packages.
|
2964
2957
|
|
2965
2958
|
## Sending a Package
|
2966
2959
|
|
@@ -2979,7 +2972,19 @@ Additional optional parameters in `delivery_info`:
|
|
2979
2972
|
* Package Note: : `"note":"note this and that"`
|
2980
2973
|
* Package Metadata: `"metadata":{"Meta1":"Val1","Meta2":"Val2"}`
|
2981
2974
|
|
2982
|
-
##
|
2975
|
+
## Email notification on transfer
|
2976
|
+
|
2977
|
+
Like for any transfer, a notification can be sent by email using parameters: `notif_to` and `notif_template` .
|
2978
|
+
|
2979
|
+
Example:
|
2980
|
+
|
2981
|
+
```
|
2982
|
+
$ ascli faspex package send --delivery-info=@json:'{"title":"test pkg 1","recipients":["aspera.user1@gmail.com"]}' ~/Documents/Samples/200KB.1 --notif-to=aspera.user1@gmail.com --notif-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: Package sent: <%=ts["tags"]["aspera"]["faspex"]["metadata"]["_pkg_name"]%> files received\n\nTo user: <%=ts["tags"]["aspera"]["faspex"]["recipients"].first["email"]%>}'
|
2983
|
+
```
|
2984
|
+
|
2985
|
+
In this example the notification template is directly provided on command line. Package information placed in the message are directly taken from the tags in transfer spec. The template can be placed in a file using modifier: `@file:`
|
2986
|
+
|
2987
|
+
## Operation on dropboxes
|
2983
2988
|
|
2984
2989
|
Example:
|
2985
2990
|
|
@@ -3397,14 +3402,14 @@ Aspera CLI can send email, for that setup SMTP configuration. This is done with
|
|
3397
3402
|
The `smtp` option is a hash table (extended value) with the following fields:
|
3398
3403
|
<table>
|
3399
3404
|
<tr><th>field</th><th>default</th><th>example</th><th>description</th></tr>
|
3400
|
-
<tr><td
|
3401
|
-
<tr><td
|
3402
|
-
<tr><td
|
3403
|
-
<tr><td
|
3404
|
-
<tr><td
|
3405
|
-
<tr><td
|
3406
|
-
<tr><td
|
3407
|
-
<tr><td
|
3405
|
+
<tr><td>`server`</td><td>-</td><td>smtp.gmail.com</td><td>SMTP server address</td></tr>
|
3406
|
+
<tr><td>`tls`</td><td>true</td><td>false</td><td>use of TLS</td></tr>
|
3407
|
+
<tr><td>`port`</td><td>587 for tls<br/>25 else</td><td>587</td><td>port for service</td></tr>
|
3408
|
+
<tr><td>`domain`</td><td>domain of server</td><td>gmail.com</td><td>email domain of user</td></tr>
|
3409
|
+
<tr><td>`username`</td><td>-</td><td>john@example.com</td><td>user to authenticate on SMTP server, leave empty for open auth.</td></tr>
|
3410
|
+
<tr><td>`password`</td><td>-</td><td>MyP@ssword</td><td>password for above username</td></tr>
|
3411
|
+
<tr><td>`from_email`</td><td>username if defined</td><td>laurent.martin.l@gmail.com</td><td>address used if received replies</td></tr>
|
3412
|
+
<tr><td>`from_name`</td><td>same as email</td><td>John Wayne</td><td>display name of sender</td></tr>
|
3408
3413
|
</table>
|
3409
3414
|
|
3410
3415
|
## Example of configuration:
|
@@ -3434,13 +3439,52 @@ $ ascli config id cli_default set smtp @val:@preset:smtp_google
|
|
3434
3439
|
$ ascli config id default set config cli_default
|
3435
3440
|
```
|
3436
3441
|
|
3442
|
+
## Email templates
|
3443
|
+
|
3444
|
+
Sent emails are built using a template that uses the [ERB](https://www.tutorialspoint.com/ruby/eruby.htm) syntax.
|
3445
|
+
|
3446
|
+
The template is the full SMTP message, including headers.
|
3447
|
+
|
3448
|
+
The following variables are defined by default:
|
3449
|
+
|
3450
|
+
* from_name
|
3451
|
+
* from_email
|
3452
|
+
* to
|
3453
|
+
|
3454
|
+
Other variables are defined depending on context.
|
3455
|
+
|
3437
3456
|
## Test
|
3438
3457
|
|
3439
3458
|
Check settings with `smtp_settings` command. Send test email with `email_test`.
|
3440
3459
|
|
3441
3460
|
```
|
3442
3461
|
$ ascli config --smtp=@preset:smtp_google smtp
|
3443
|
-
$ ascli config --smtp=@preset:smtp_google email sample.dest@example.com
|
3462
|
+
$ ascli config --smtp=@preset:smtp_google email --notif-to=sample.dest@example.com
|
3463
|
+
```
|
3464
|
+
|
3465
|
+
## Notifications for transfer status
|
3466
|
+
|
3467
|
+
An e-mail notification can be sent upon transfer success and failure (one email per transfer job, one job being possibly multi session, and possibly after retry).
|
3468
|
+
|
3469
|
+
To activate, use option `notif_to`.
|
3470
|
+
|
3471
|
+
A default e-mail template is used, but it can be overriden with option `notif_template`.
|
3472
|
+
|
3473
|
+
The environment provided contains the following additional variables:
|
3474
|
+
|
3475
|
+
* subject
|
3476
|
+
* body
|
3477
|
+
* global_transfer_status
|
3478
|
+
* ts
|
3479
|
+
|
3480
|
+
Example of template:
|
3481
|
+
|
3482
|
+
```
|
3483
|
+
From: <%=from_name%> <<%=from_email%>>
|
3484
|
+
To: <<%=to%>>
|
3485
|
+
Subject: <%=subject%>
|
3486
|
+
|
3487
|
+
Transfer is: <%=global_transfer_status%>
|
3444
3488
|
```
|
3445
3489
|
|
3446
3490
|
# Tool: `asession`
|
@@ -3571,7 +3615,7 @@ Interesting ascp features are found in its arguments: (see ascp manual):
|
|
3571
3615
|
Note that:
|
3572
3616
|
|
3573
3617
|
* `ascli` takes transfer parameters exclusively as a transfer_spec, with `--ts` parameter.
|
3574
|
-
* not all native ascp arguments are available as standard transfer_spec parameters
|
3618
|
+
* most, but not all native ascp arguments are available as standard transfer_spec parameters
|
3575
3619
|
* native ascp arguments can be provided with the [_transfer-spec_](#transferspec) parameter: EX_ascp_args (array), only for the "local" transfer agent (not connect or node)
|
3576
3620
|
|
3577
3621
|
### server side and configuration
|
@@ -3668,6 +3712,18 @@ So, it evolved into `ascli`:
|
|
3668
3712
|
|
3669
3713
|
# Changes (Release notes)
|
3670
3714
|
|
3715
|
+
* 4.2.2
|
3716
|
+
|
3717
|
+
* new: `faspex package list` retrieves the whole list, not just first page
|
3718
|
+
* new: support web based auth to aoc and faspex 5 using HTTPS, new dependency on gem `webrick`
|
3719
|
+
* new: the error "Remote host is not who we expected" displays a special remediation message
|
3720
|
+
* new: `conf ascp spec` displays supported transfer spec
|
3721
|
+
* new: options `notif_to` and `notif_template` to send email notifications on transfer (and other events)
|
3722
|
+
* fix: space character in `faspe:` url are precent encoded if needed
|
3723
|
+
* fix: `preview scan`: if file_id is unknown, ignore and continue scan
|
3724
|
+
* change: for commands that potentially execute several transfers (`package recv --id=ALL`), if one transfer fails then `ascli` exits with code 1 (instead of zero=success)
|
3725
|
+
* change: (break) option `notify` or `aoc` replaced with `notif_to` and `notif_template`
|
3726
|
+
|
3671
3727
|
* 4.2.1
|
3672
3728
|
|
3673
3729
|
* new: command `faspex package recv` supports link of type: `faspe:`
|
@@ -4092,13 +4148,17 @@ You may either install the suggested Gems, or remove your ed25519 key from your
|
|
4092
4148
|
|
4093
4149
|
## Error "Remote host is not who we expected"
|
4094
4150
|
|
4095
|
-
`ascp`
|
4151
|
+
Cause: `ascp` >= 4.x checks fingerprint of highest server host key, including ECDSA. `ascp` < 4.0 (3.9.6 and earlier) support only to RSA level (and ignore ECDSA presented by server). `aspera.conf` supports a single fingerprint.
|
4152
|
+
|
4153
|
+
Workaround on client side: To ignore the certificate (SSH fingerprint) add option on client side (this option can also be added permanently to the config file):
|
4096
4154
|
|
4097
4155
|
```
|
4098
4156
|
--ts=@json:'{"sshfp":null}'
|
4099
4157
|
```
|
4100
4158
|
|
4101
|
-
|
4159
|
+
Workaround on server side: Either remove the fingerprint from `aspera.conf`, or keep only RSA host keys in `sshd_config`.
|
4160
|
+
|
4161
|
+
References: ES-1944 in release notes of 4.1 and to [HSTS admin manual section "Configuring Transfer Server Authentication With a Host-Key Fingerprint"](https://www.ibm.com/docs/en/ahts/4.2?topic=upgrades-configuring-ssh-server).
|
4102
4162
|
|
4103
4163
|
## Miscelaneous
|
4104
4164
|
|
data/docs/Makefile
CHANGED
@@ -10,9 +10,9 @@ DIR_DOC=
|
|
10
10
|
INCL_USAGE=$(DIR_TMP)$(EXENAME)_usage.txt
|
11
11
|
INCL_COMMANDS=$(DIR_TMP)$(EXENAME)_commands.txt
|
12
12
|
INCL_ASESSION=$(DIR_TMP)asession_usage.txt
|
13
|
-
|
13
|
+
|
14
14
|
# env var used in README.erb.md
|
15
|
-
export EXENAME GEMSPEC INCL_USAGE INCL_COMMANDS INCL_ASESSION
|
15
|
+
export EXENAME GEMSPEC INCL_USAGE INCL_COMMANDS INCL_ASESSION
|
16
16
|
|
17
17
|
TMPL_TEST_CONF=$(DIR_DOC)$(TEST_CONF_FILE_BASE)
|
18
18
|
|
@@ -33,8 +33,8 @@ $(MANUAL_PDF): $(DIR_TOP)README.md
|
|
33
33
|
pandoc --number-sections --resource-path=. --toc -o $(MANUAL_HTML) $(DIR_TOP)README.md
|
34
34
|
wkhtmltopdf toc $(MANUAL_HTML) $(MANUAL_PDF)
|
35
35
|
|
36
|
-
$(DIR_TOP)README.md: $(DIR_DOC)README.erb.md $(
|
37
|
-
erb -T - --encoding UTF-8:UTF-8 $(DIR_DOC)README.erb.md > $(DIR_TOP)README.md
|
36
|
+
$(DIR_TOP)README.md: $(DIR_DOC)README.erb.md $(INCL_COMMANDS) $(INCL_USAGE) $(INCL_ASESSION)
|
37
|
+
INCL_DIR_GEM=$(DIR_TOP)lib erb -T - --encoding UTF-8:UTF-8 $(DIR_DOC)README.erb.md > $(DIR_TOP)README.md
|
38
38
|
|
39
39
|
$(INCL_COMMANDS): $(DIR_TMP).exists $(TEST_MAKEFILE)
|
40
40
|
sed -nEe 's/.*\$$\(EXE_MAN.?\)/$(EXENAME)/p' $(TEST_MAKEFILE) > $(DIR_TMP)usg1.txt
|