aspera-cli 4.0.0.pre3 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +695 -205
  3. data/bin/dascli +13 -0
  4. data/docs/README.erb.md +615 -157
  5. data/docs/test_env.conf +23 -5
  6. data/docs/transfer_spec.html +1 -1
  7. data/examples/aoc.rb +14 -3
  8. data/examples/faspex4.rb +78 -0
  9. data/lib/aspera/aoc.rb +87 -108
  10. data/lib/aspera/cli/formater.rb +2 -0
  11. data/lib/aspera/cli/main.rb +46 -34
  12. data/lib/aspera/cli/plugin.rb +9 -4
  13. data/lib/aspera/cli/plugins/alee.rb +1 -1
  14. data/lib/aspera/cli/plugins/aoc.rb +207 -182
  15. data/lib/aspera/cli/plugins/ats.rb +2 -2
  16. data/lib/aspera/cli/plugins/config.rb +173 -117
  17. data/lib/aspera/cli/plugins/console.rb +2 -2
  18. data/lib/aspera/cli/plugins/faspex.rb +51 -36
  19. data/lib/aspera/cli/plugins/faspex5.rb +82 -41
  20. data/lib/aspera/cli/plugins/node.rb +3 -3
  21. data/lib/aspera/cli/plugins/preview.rb +35 -25
  22. data/lib/aspera/cli/plugins/server.rb +23 -8
  23. data/lib/aspera/cli/transfer_agent.rb +7 -6
  24. data/lib/aspera/cli/version.rb +1 -1
  25. data/lib/aspera/cos_node.rb +33 -28
  26. data/lib/aspera/environment.rb +2 -2
  27. data/lib/aspera/fasp/connect.rb +28 -21
  28. data/lib/aspera/fasp/http_gw.rb +140 -28
  29. data/lib/aspera/fasp/installation.rb +101 -53
  30. data/lib/aspera/fasp/local.rb +88 -45
  31. data/lib/aspera/fasp/manager.rb +15 -0
  32. data/lib/aspera/fasp/node.rb +4 -4
  33. data/lib/aspera/fasp/parameters.rb +6 -18
  34. data/lib/aspera/fasp/resume_policy.rb +13 -12
  35. data/lib/aspera/log.rb +1 -1
  36. data/lib/aspera/node.rb +61 -1
  37. data/lib/aspera/oauth.rb +49 -46
  38. data/lib/aspera/persistency_folder.rb +9 -4
  39. data/lib/aspera/preview/file_types.rb +53 -21
  40. data/lib/aspera/preview/generator.rb +3 -3
  41. data/lib/aspera/rest.rb +29 -18
  42. data/lib/aspera/secrets.rb +20 -0
  43. data/lib/aspera/temp_file_manager.rb +19 -0
  44. data/lib/aspera/web_auth.rb +105 -0
  45. metadata +42 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22041be5b72d2a1907350832239b7e3b96890e6b50cc36ab199ecdddf6fe3e89
4
- data.tar.gz: b30116b52e35ffd5020a400fa07a519da847de1c078c2e09b91349488c95947a
3
+ metadata.gz: 89eb5bdf4ecda69281c147ad7e2da3027e98a55316f51774c3504c680c4411e4
4
+ data.tar.gz: 5d8f34bf429f575495890b656df0598f94a4ea67aa8d373d756ea7449c729562
5
5
  SHA512:
6
- metadata.gz: d7992b721a8dc47334ad5706aa645534822ef7b9608055c1ef0c5908085c20e45dd2dc4b7a4210481b40af9f554f389fe408c8807cc7d2eb40c3e7b212f0c4f9
7
- data.tar.gz: 16ee1fdb8ddfecac75a0674f2f4be902decc76543b3577e81a12284d899d74b4cd1c38b68f6bda126aebd1f9cddf045af0c7ef98fe0aa0aee0a2634b9a249a84
6
+ metadata.gz: b5a4c5f67e5f9685a1e11e7c1dc8fce6474157471ca5d5d7ad3583b4318a268a04f2fc3b3dcd84c0866f5ccb41a73596e28921d607311347c9537ec1cacec194
7
+ data.tar.gz: 40901b7baa26597164855e3f66b347666e37737315c075027a8dad81054fde424dd78c3e3432cd40093d7bb06af060981f6643b91a766e08ffe9c86b9d673f93
data/README.md CHANGED
@@ -1,30 +1,75 @@
1
1
  [comment1]: # (Do not edit this README.md, edit docs/README.erb.md, for details, read docs/README.md)
2
- # `ascli` : a Command Line for IBM Aspera products
2
+ # `ascli` : Command Line Interface for IBM Aspera products
3
3
 
4
- Version : 4.0.0.pre3
4
+ Version : 4.2.1
5
5
 
6
6
  _Laurent/2016-2021_
7
7
 
8
- This gem provides a command line interface to Aspera Applications.
8
+ This gem provides `ascli`: a command line interface to Aspera Applications.
9
9
 
10
- Location (once released):
11
- [https://rubygems.org/gems/aspera-cli](https://rubygems.org/gems/aspera-cli)
10
+ `ascli` is a also great tool to learn Aspera APIs.
12
11
 
13
- Disclaimers:
12
+ Ruby Gem: [https://rubygems.org/gems/aspera-cli](https://rubygems.org/gems/aspera-cli)
14
13
 
15
- * This has not yet been officially released so things may change
14
+ Ruby Doc: [https://www.rubydoc.info/gems/aspera-cli](https://www.rubydoc.info/gems/aspera-cli)
16
15
 
17
- That being said, `ascli` is very powerful and gets things done, it's also a great tool to learn Aspera APIs.
16
+ Ruby version must be >= > 2.4
18
17
 
19
- This manual addresses three parts:
18
+ # <a name="when_to_use"></a>When to use and when not to use
20
19
 
21
- * `ascli` : The command line tool
22
- * `asession` : starting a FASP Session with JSON parameters
23
- * `Aspera` : includes a Ruby "FASPManager"
20
+ `ascli` is designed to be used as a command line tool to:
21
+
22
+ * execute commands on Aspera products
23
+ * transfer to/from Aspera products
24
+
25
+ So it is designed for:
26
+
27
+ * Interactive operations on a text terminal (typically, VT100 compatible)
28
+ * Batch operations in (shell) scripts (e.g. cron job)
29
+
30
+ `ascli` can be seen as a command line tool integrating:
31
+
32
+ * a configuration file (config.yaml) and advanced command line options
33
+ * cURL (for REST calls)
34
+ * Aspera transfer (ascp)
35
+
36
+ One might be tempted to use it as an integration element, e.g. by building a command line programmatically, and then executing it. It is generally not a good idea.
37
+ For such integration cases, e.g. performing operations and transfer to aspera products, it is preferred to use [Aspera APIs](https://ibm.biz/aspera_api):
38
+
39
+ * Product APIs (REST) : e.g. AoC, Faspex, node
40
+ * Transfer SDK : with gRPC interface and laguage stubs (C, C++, Python, .NET/C#, java, ruby, etc...)
41
+
42
+ Using APIs (application REST API and transfer SDK) will prove to be easier to develop and maintain.
43
+
44
+ For scripting and ad'hoc command line operations, `ascli` is perfect.
45
+
46
+ # Notations
24
47
 
25
48
  In examples, command line operations (starting with `$`) are shown using a standard shell: `bash` or `zsh`.
49
+ Prompt `# ` refers to user `root`, prompt `xfer$ ` refer to user `xfer`.
50
+
51
+ Command line parameters in examples beginning with `my_`, like `my_param_value` are user-provided value and not fixed value commands.
52
+
53
+ # <a name="parsing"></a>Shell and Command line parsing
54
+
55
+ `ascli` is typically executed in a shell, either interactively or in a script. `ascli` receives its arguments from this shell.
26
56
 
27
- Command line parameters in example beginning with `my_`, like `my_param_value` are user-provided value and not fixed value commands.
57
+ On Linux and Unix environments, this is typically a POSIX shell (bash, zsh, ksh, sh). In this environment shell command line parsing applies before `ascli` (Ruby) is executed, e.g. [bash shell operation](https://www.gnu.org/software/bash/manual/bash.html#Shell-Operation). Ruby receives a list parameters and gives it to `ascli`. So special character handling (quotes, spaces, env vars, ...) is done in the shell.
58
+
59
+ On Windows, `cmd` is typically used. Windows process creation does not receive the list of arguments but just the whole line. It's up to the program to parse arguments. Ruby follows the Microsoft C/C++ parameter parsing rules.
60
+
61
+ * [Windows: How Command Line Parameters Are Parsed](https://daviddeley.com/autohotkey/parameters/parameters.htm#RUBY)
62
+ * [Understand Quoting and Escaping of Windows Command Line Arguments](http://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by-a-windows-program/)
63
+
64
+ In case of doubt of argument values after parsing test like this:
65
+
66
+ ```
67
+ $ ascli conf echo "Hello World" arg2 3
68
+ "Hello World"
69
+ ERROR: Argument: unprocessed values: ["arg2", "3"]
70
+ ```
71
+
72
+ `echo` displays the value of the first argument using ruby syntax (strings get double quotes) after command line parsing (shell) and extended value parsing (ascli), next command line arguments are shown in the error message.
28
73
 
29
74
  # Quick Start
30
75
 
@@ -36,7 +81,7 @@ Once the gem is installed, `ascli` shall be accessible:
36
81
 
37
82
  ```
38
83
  $ ascli --version
39
- 4.0.0.pre3
84
+ 4.2.1
40
85
  ```
41
86
 
42
87
  ## First use
@@ -45,9 +90,10 @@ Once installation is completed, you can proceed to the first use with a demo ser
45
90
 
46
91
  If you want to test with Aspera on Cloud, jump to section: [Wizard](#aocwizard)
47
92
 
48
- If you want to test with Aspera demo transfer server, a default configuration is created on first use:
93
+ To test with Aspera demo transfer server, setup the environment and then test:
49
94
 
50
95
  ```
96
+ $ ascli config initdemo
51
97
  $ ascli server browse /
52
98
  :............:...........:......:........:...........................:.......................:
53
99
  : zmode : zuid : zgid : size : mtime : name :
@@ -67,7 +113,7 @@ If you want to use `ascli` with another server, and in order to make further cal
67
113
  * download a file
68
114
 
69
115
  ```
70
- $ ascli config id myserver update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=demoaspera
116
+ $ ascli config id myserver update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=_demo_pass_
71
117
  updated: myserver
72
118
  $ ascli config id default set server myserver
73
119
  updated: default&rarr;server to myserver
@@ -101,79 +147,159 @@ Then, follow the section relative to the product you want to interact with ( Asp
101
147
 
102
148
  # <a name="installation"></a>Installation
103
149
 
104
- In order to use the tool or the gem, it is necessary to install those components:
150
+ It is possible to install *either* directly on the host operating system (Linux, Windows, Macos) or as a docker container.
151
+
152
+ The direct installation is recommended and consists in installing:
105
153
 
106
- * [Ruby](#ruby)
154
+ * [Ruby](#ruby) version >= > 2.4
107
155
  * [aspera-cli](#the_gem)
108
- * [FASP](#fasp_prot)
156
+ * [Aspera SDK (ascp)](#fasp_prot)
157
+
158
+ The following sections provide information on the various installation methods.
159
+
160
+ An internet connection is required for the installation. If you dont have internet for the installation, refer to section [Installation without internet access](#offline_install).
161
+
162
+ ## Docker container
163
+
164
+ Use this method only if you know what you do, else use the standard recommended method as described here above.
109
165
 
110
- The following sections provide information on the installation.
166
+ This method installs a docker image that contains: Ruby, ascli and the FASP sdk.
167
+
168
+ Ensure that you have Docker installed.
169
+
170
+ ```
171
+ $ docker --version
172
+ ```
173
+
174
+ Download the wrapping script:
175
+
176
+ ```
177
+ $ curl -o ascli https://raw.githubusercontent.com/IBM/aspera-cli/develop/bin/dascli
178
+ $ chmod a+x ascli
179
+ ```
180
+
181
+ Install the container image:
182
+
183
+ ```
184
+ $ ./ascli install
185
+ ```
186
+
187
+ Start using it !
188
+
189
+ Note that the tool is run in the container, so transfers are also executed in the container, not calling host.
190
+
191
+ The wrapping script maps the container folder `/usr/src/app/config` to configuration folder `$HOME/.aspera/ascli` on host.
192
+
193
+ To transfer to/from the native host, you will need to map a volume in docker or use the config folder (already mapped).
194
+ To add local storage as a volume edit the script: ascli and add a `--volume` stanza.
111
195
 
112
196
  ## <a name="ruby"></a>Ruby
113
197
 
198
+ Use this method to install on the native host.
199
+
114
200
  A ruby interpreter is required to run the tool or to use the gem and tool.
115
- The Ruby version shall be at least > 2.4.
116
- Any type of Ruby installation can be used.
117
- Ruby 3 is not yet tested.
201
+
202
+ Ruby minimum version: > 2.4. Ruby version 3 is also supported.
203
+
204
+ *Ruby can be installed using any method* : rpm, yum, dnf, rvm, brew, windows installer, ... .
118
205
 
119
206
  Refer to the following sections for a proposed method for specific operating systems.
120
207
 
121
- ### macOS
208
+ The recommended installation method is `rvm` for systems with "bash-like" shell (Linux, Macos, Windows with cygwin, etc...).
209
+ If the generic install is not suitable (e.g. Windows, no cygwin), you can use one of OS-specific install method.
210
+ If you have a simpler better way to install Ruby version >= > 2.4 : use it !
211
+
212
+ ### Generic: RVM: single user installation (not root)
122
213
 
214
+ Use this method which provides more flexibility.
123
215
 
124
- MacOS 10.13+ (High Sierra) comes with a recent Ruby, so you can use it directly, you will need to install aspera-cli using `sudo` :
216
+ Install "rvm": follow [https://rvm.io/](https://rvm.io/) :
217
+
218
+ Install the 2 keys
125
219
 
126
220
  ```
127
- $ sudo gem install aspera-cli --pre
221
+ $ gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
128
222
  ```
129
223
 
130
- Alternatively, if you use [Homebrew](https://brew.sh/) already you can install Ruby with it:
224
+ Execute the shell/curl command. As regular user, it install in the user's home: `~/.rvm` .
131
225
 
132
226
  ```
133
- $ brew install ruby
227
+ $ \curl -sSL https://get.rvm.io | bash -s stable
228
+ ```
229
+
230
+ If you keep the same terminal (ont needed if re-login):
231
+
134
232
  ```
233
+ $ source ~/.rvm/scripts/rvm
234
+ ```
235
+
236
+ It is advised to get one of the pre-compiled ruby version, you can list with:
135
237
 
136
- ### Windows
238
+ ```
239
+ $ rvm list --remote
240
+ ```
137
241
 
138
- Install Latest stable Ruby using [https://rubyinstaller.org/](https://rubyinstaller.org/).
242
+ Install the chosen pre-compiled Ruby version:
139
243
 
140
- Go to "Downloads".
244
+ ```
245
+ $ rvm install 2.7.2 --binary
246
+ ```
141
247
 
142
- Select the Ruby 2 version "without devkit", x64 corresponding to the one recommended "with devkit". Devkit is not needed.
248
+ Ruby is now installed for the user, go on to Gem installation.
143
249
 
144
- At the end of the installer uncheck the box to skip the installation of "MSys2".
250
+ ### Generic: RVM: global installation (as root)
145
251
 
146
- ### Linux
252
+ Follow the same method as single user install, but execute as "root".
147
253
 
148
- Install Latest Ruby 2 using "rvm" [https://rvm.io/](https://rvm.io/) .
149
- It installs by default in /usr/local/rvm , but you can install in another location:
254
+ As root, it installs by default in /usr/local/rvm for all users and creates `/etc/profile.d/rvm.sh`.
255
+ One can install in another location with :
150
256
 
151
257
  ```
152
- curl -sSL https://get.rvm.io | bash -s -- --path /usr/local
258
+ # curl -sSL https://get.rvm.io | bash -s -- --path /usr/local
153
259
  ```
154
260
 
155
- Once installed, you can install latest ruby:
261
+ As root, make sure this will not collide with other application using Ruby (e.g. Faspex).
262
+ If so, one can rename the login script: `mv /etc/profile.d/rvm.sh /etc/profile.d/rvm.sh.ok`.
263
+ To activate ruby (and ascli) later, source it:
156
264
 
157
265
  ```
158
- # rvm install ruby
266
+ # source /etc/profile.d/rvm.sh.ok
267
+ # rvm version
159
268
  ```
160
269
 
161
- If you dont want all users to have ruby by default,
162
- rename the file: `/etc/profile.d/rvm.sh` with another extension, and source it to get rvm.
270
+ ### Windows: Installer
163
271
 
164
- Alternatively, only if you know what you do, on RPM based systems (CentOs, Redhat), install the ruby provided by yum which may be 2.0.
272
+ Install Latest stable Ruby using [https://rubyinstaller.org/](https://rubyinstaller.org/) :
273
+
274
+ * Go to "Downloads".
275
+ * Select the Ruby 2 version "without devkit", x64 corresponding to the one recommended "with devkit". Devkit is not needed.
276
+ * At the end of the installer uncheck the box to skip the installation of "MSys2": not needed.
277
+
278
+ ### macOS: pre-installed or `brew`
279
+
280
+ MacOS 10.13+ (High Sierra) comes with a recent Ruby. So you can use it directly. You will need to install aspera-cli using `sudo` :
165
281
 
166
282
  ```
167
- # yum install -y ruby rubygems ruby-json
283
+ $ sudo gem install aspera-cli
168
284
  ```
169
285
 
170
- If necessary, pre-install jwt for older Ruby < 2.1.
286
+ Alternatively, if you use [Homebrew](https://brew.sh/) already you can install Ruby with it:
171
287
 
172
288
  ```
173
- # gem install jwt -v 1.5.6
289
+ $ brew install ruby
174
290
  ```
175
291
 
176
- You can cleanup your whole yum-installed ruby environment like this to uninstall:
292
+ ### Linux: package
293
+
294
+ If your Linux distribution provides a standard ruby package, you can use it provided that the version is compatible (check at beginning of section).
295
+
296
+ Example:
297
+
298
+ ```
299
+ # yum install -y ruby rubygems ruby-json
300
+ ```
301
+
302
+ One can cleanup the whole yum-installed ruby environment like this to uninstall:
177
303
 
178
304
  ```
179
305
  gem uninstall $(ls $(gem env gemdir)/gems/|sed -e 's/-[^-]*$//'|sort -u)
@@ -182,7 +308,7 @@ yum remove -y ruby ruby-libs
182
308
 
183
309
  ### Other Unixes: Aix, etc...
184
310
 
185
- If your unix do not provide a pre-built ruby, you can get using one of those
311
+ If your unix do not provide a pre-built ruby, you can get it using one of those
186
312
  [methods](https://www.ruby-lang.org/en/documentation/installation/)
187
313
 
188
314
  For instance to build from source, and install in `/opt/ruby` :
@@ -198,12 +324,56 @@ For instance to build from source, and install in `/opt/ruby` :
198
324
  # make install
199
325
  ```
200
326
 
327
+ ### <a name="offline_install"></a>Installation without internet access
328
+
329
+ Note that currently no pre-packaged version exist yet.
330
+ A method to build one provided here:
331
+
332
+ On a server with the same OS version and with internet access follow the "Generic single user installation" method.
333
+
334
+ Then create an archive:
335
+
336
+ ```
337
+ $ cd
338
+ $ tar zcvf rvm-ascli.tgz .rvm
339
+ ```
340
+
341
+ Get the Aspera SDK. Execute:
342
+
343
+ ```
344
+ $ ascli conf --show-config|grep sdk_url
345
+ ```
346
+
347
+ Then download the SDK archive from that URL.
348
+
349
+ Another method for the SDK is to install the SDK (`ascli conf ascp install`) on the first system, and archive `$HOME/.aspera`.
350
+
351
+ Transfer those 2 archives to the target system without internet access.
352
+
353
+ On the target system:
354
+
355
+ * Extract the RVM archive either in a global location, or in a user's home folder : `path_to_rvm_root`
356
+ * in the user's `.profile` add this line: (replace `path_to_rvm_root` with the actual location)
357
+
358
+ ```
359
+ source path_to_rvm_root/scripts/rvm
360
+ rvm use 2.7.2
361
+ ```
362
+
363
+ For the SDK, either install from archive:
364
+
365
+ ```
366
+ $ ascli conf ascp install --sdk-url=file:///SDK.zip
367
+ ```
368
+
369
+ or restore the `$HOME/.aspera` folder for the user.
370
+
201
371
  ## <a name="the_gem"></a>`aspera-cli` gem
202
372
 
203
373
  Once you have Ruby and rights to install gems: Install the gem and its dependencies:
204
374
 
205
375
  ```
206
- # gem install aspera-cli --pre
376
+ # gem install aspera-cli
207
377
  ```
208
378
 
209
379
  To upgrade to the latest version:
@@ -212,21 +382,40 @@ To upgrade to the latest version:
212
382
  # gem update aspera-cli
213
383
  ```
214
384
 
385
+ `ascli` checks every week if a new version is available and notify the user in a WARN log. To de-activate this feature set the option `version_check_days` to `0`, or specify a different period in days.
386
+
387
+ To check manually:
388
+
389
+ ```
390
+ # ascli conf check_update
391
+ ```
392
+
393
+
394
+
215
395
  ## <a name="fasp_prot"></a>FASP Protocol
216
396
 
217
- Most file transfers will be done using the FASP protocol. Only two additional files are required to perform
218
- an Aspera Transfer:
397
+ Most file transfers will be done using the FASP protocol, using `ascp`.
398
+ Only two additional files are required to perform an Aspera Transfer, which are part of Aspera SDK:
219
399
 
220
400
  * ascp
221
401
  * aspera-license (in same folder, or ../etc)
222
402
 
223
- This can be installed directly with
403
+ This can be installed either be installing an Aspera transfer sofware, or using an embedded command:
224
404
 
225
405
  ```
226
406
  $ ascli conf ascp install
227
407
  ```
228
408
 
229
- Those can be found in one of IBM Aspera transfer server or client with its license file (some are free):
409
+ If a local SDK installation is prefered instead of fetching from internet: one can specify the location of the SDK file:
410
+
411
+ ```
412
+ $ curl -Lso SDK.zip https://ibm.biz/aspera_sdk
413
+ $ ascli conf ascp install --sdk-url=file:///SDK.zip
414
+ ```
415
+
416
+ The format is: `file:///<path>`, where `<path>` can be either a relative path (not starting with `/`), or an absolute path.
417
+
418
+ If the embedded method is not used, the following packages are also suitable:
230
419
 
231
420
  * IBM Aspera Connect Client (Free)
232
421
  * IBM Aspera Desktop Client (Free)
@@ -235,7 +424,7 @@ Those can be found in one of IBM Aspera transfer server or client with its licen
235
424
  * IBM Aspera High Speed Transfer EndPoint (Licensed)
236
425
 
237
426
  For instance, Aspera Connect Client can be installed
238
- by visiting the page: [http://downloads.asperasoft.com/connect2/](http://downloads.asperasoft.com/connect2/).
427
+ by visiting the page: [https://www.ibm.com/aspera/connect/](https://www.ibm.com/aspera/connect/).
239
428
 
240
429
  `ascli` will detect most of Aspera transfer products in standard locations and use the first one found.
241
430
  Refer to section [FASP](#client) for details on how to select a client or set path to the FASP protocol.
@@ -243,6 +432,33 @@ Refer to section [FASP](#client) for details on how to select a client or set pa
243
432
  Several methods are provided on how to start a transfer. Use of a local client is one of them, but
244
433
  other methods are available. Refer to section: [Transfer Agents](#agents)
245
434
 
435
+ ## <a name="offline_install"></a>Offline Installation (without internet)
436
+
437
+ The procedure consists in:
438
+
439
+ * Follow the non-root installation procedure with RVM, including gem
440
+ * archive (zip, tar) the main RVM folder (includes ascli):
441
+
442
+ ```
443
+ $ cd ~
444
+ $ tar zcvf rvm_ascli.tgz .rvm
445
+ ```
446
+
447
+ * retrieve the SDK:
448
+
449
+ ```
450
+ $ curl -Lso SDK.zip https://ibm.biz/aspera_sdk
451
+ ```
452
+
453
+ * on the system without internet access:
454
+
455
+ ```
456
+ $ cd ~
457
+ $ tar zxvf rvm_ascli.tgz
458
+ $ source ~/.rvm/scripts/rvm
459
+ $ ascli conf ascp install --sdk-url=file:///SDK.zip
460
+ ```
461
+
246
462
  # <a name="cli"></a>Command Line Interface: `ascli`
247
463
 
248
464
  The `aspera-cli` Gem provides a command line interface (CLI) which interacts with Aspera Products (mostly using REST APIs):
@@ -423,6 +639,7 @@ By default, a table output will display one line per entry, and columns for each
423
639
  * a,b,c : the list of attributes specified by the comma separated list
424
640
  * Array extended value: for instance, @json:'["a","b","c"]' same as above
425
641
  * +a,b,c : add selected properties to the default selection.
642
+ * -a,b,c : remove selected properties from the default selection.
426
643
 
427
644
  ## <a name="extended"></a>Extended Value Syntax
428
645
 
@@ -436,25 +653,25 @@ The extended value syntax is:
436
653
 
437
654
  The difference between reader and decoder is order and ordinality. Both act like a function of value on right hand side. Decoders are at the beginning of the value, followed by a single optional reader, followed by the optional value.
438
655
 
439
- The following "readers" are supported:
656
+ The following "readers" are supported (returns value in []):
440
657
 
441
- * @val:VALUE , prevent further special prefix processing, e.g. `--username=@val:laurent` sets the option `username` to value `laurent`.
442
- * @file:PATH , read value from a file (prefix "~/" is replaced with the users home folder), e.g. --key=@file:~/.ssh/mykey
443
- * @path:PATH , performs path expansion (prefix "~/" is replaced with the users home folder), e.g. --config-file=@path:~/sample_config.yml
444
- * @env:ENVVAR , read from a named env var, e.g.--password=@env:MYPASSVAR
445
- * @stdin: , read from stdin (no value on right)
446
- * @preset:NAME , get whole option preset value by name
658
+ * @val:VALUE : [String] prevent further special prefix processing, e.g. `--username=@val:laurent` sets the option `username` to value `laurent`.
659
+ * @file:PATH : [String] read value from a file (prefix "~/" is replaced with the users home folder), e.g. --key=@file:~/.ssh/mykey
660
+ * @path:PATH : [String] performs path expansion (prefix "~/" is replaced with the users home folder), e.g. --config-file=@path:~/sample_config.yml
661
+ * @env:ENVVAR : [String] read from a named env var, e.g.--password=@env:MYPASSVAR
662
+ * @stdin: : [String] read from stdin (no value on right)
663
+ * @preset:NAME : [Hash] get whole option preset value by name
447
664
 
448
665
  In addition it is possible to decode a value, using one or multiple decoders :
449
666
 
450
- * @base64: decode a base64 encoded string
451
- * @json: decode JSON values (convenient to provide complex structures)
452
- * @zlib: uncompress data
453
- * @ruby: execute ruby code
454
- * @csvt: decode a titled CSV value
455
- * @lines: split a string in multiple lines and return an array
456
- * @list: split a string in multiple items taking first character as separator and return an array
457
- * @incps: include values of presets specified by key include_presets in hash
667
+ * @base64: [String] decode a base64 encoded string
668
+ * @json: [any] decode JSON values (convenient to provide complex structures)
669
+ * @zlib: [String] uncompress data
670
+ * @ruby: [any] execute ruby code
671
+ * @csvt: [Array] decode a titled CSV value
672
+ * @lines: [Array] split a string in multiple lines and return an array
673
+ * @list: [Array] split a string in multiple items taking first character as separator and return an array
674
+ * @incps: [Hash] include values of presets specified by key `incps` in input hash
458
675
 
459
676
  To display the result of an extended value, use the `config echo` command.
460
677
 
@@ -486,7 +703,7 @@ $ ascli config echo @csvt:@file:test.csv
486
703
  :......:.....................:
487
704
  ```
488
705
 
489
- Example: create a hash and include values from preset named "config" of config file
706
+ Example: create a hash and include values from preset named "config" of config file in this hash
490
707
 
491
708
  ```
492
709
  $ ascli config echo @incps:@json:'{"hello":true,"incps":["config"]}'
@@ -562,7 +779,7 @@ $ ascli config id <option preset> set|delete|show|initialize|update
562
779
  The command `update` allows the easy creation of [option preset](#lprt) by simply providing the options in their command line format, e.g. :
563
780
 
564
781
  ```
565
- $ ascli config id demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=demoaspera --ts=@json:'{"precalculate_job_size":true}'
782
+ $ ascli config id demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=_demo_pass_ --ts=@json:'{"precalculate_job_size":true}'
566
783
  ```
567
784
 
568
785
  * This creates a [option preset](#lprt) `demo_server` with all provided options.
@@ -570,13 +787,13 @@ $ ascli config id demo_server update --url=ssh://demo.asperasoft.com:33001 --use
570
787
  The command `set` allows setting individual options in a [option preset](#lprt).
571
788
 
572
789
  ```
573
- $ ascli config id demo_server set password demoaspera
790
+ $ ascli config id demo_server set password _demo_pass_
574
791
  ```
575
792
 
576
793
  The command `initialize`, like `update` allows to set several parameters at once, but it deletes an existing configuration instead of updating it, and expects a _[Structured Value](#native)_.
577
794
 
578
795
  ```
579
- $ ascli config id demo_server initialize @json:'{"url":"ssh://demo.asperasoft.com:33001","username":"asperaweb","password":"demoaspera","ts":{"precalculate_job_size":true}}'
796
+ $ ascli config id demo_server initialize @json:'{"url":"ssh://demo.asperasoft.com:33001","username":"asperaweb","password":"_demo_pass_","ts":{"precalculate_job_size":true}}'
580
797
  ```
581
798
 
582
799
  A good practice is to not manually edit the configuration file and use modification commands instead.
@@ -613,11 +830,19 @@ Note that special plugin name: `config` can be associated with a preset that is
613
830
  Operations on this preset are done using regular `config` operations:
614
831
 
615
832
  ```
616
- $ ascli config id default set _plugin_name_ _defauklt_preset_for_plugin_
833
+ $ ascli config id default set _plugin_name_ _default_preset_for_plugin_
617
834
  $ ascli config id default get _plugin_name_
618
- "_defauklt_preset_for_plugin_"
835
+ "_default_preset_for_plugin_"
619
836
  ```
620
837
 
838
+ ### <a name="lprtdef"></a>Special Plugin: config
839
+
840
+ Plugin `config` (not to be confused with Option preset config) is used to configure `ascli` but it also contains global options.
841
+
842
+ When `ascli` starts, it lookjs for the `default` Option preset and if there is a value for `config`, if so, it loads the option values for any plugin used.
843
+
844
+ If no global default is set by the user, the tool will use `global_common_defaults` when setting global parameters (e.g. `conf ascp use`)
845
+
621
846
  ### Format of file
622
847
 
623
848
  The configuration file is a hash in a YAML file. Example:
@@ -633,7 +858,7 @@ cli_default:
633
858
  demo_server:
634
859
  url: ssh://demo.asperasoft.com:33001
635
860
  username: asperaweb
636
- password: demoaspera
861
+ password: _demo_pass_
637
862
  ```
638
863
 
639
864
  We can see here:
@@ -702,7 +927,6 @@ A [option preset](#lprt) value can be removed with `unset`:
702
927
  $ ascli config id cli_default unset interactive
703
928
  ```
704
929
 
705
-
706
930
  ### Examples
707
931
 
708
932
  For Faspex, Shares, Node (including ATS, Aspera Transfer Service), Console,
@@ -822,21 +1046,42 @@ The `config` plugin also allows specification for the use of a local FASP client
822
1046
 
823
1047
  ```
824
1048
  $ ascli config ascp show
825
- /Users/laurent/Applications/Aspera Connect.app/Contents/Resources/ascp
1049
+ /Users/laurent/.aspera/ascli/sdk/ascp
1050
+ $ ascli config ascp info
1051
+ +--------------------+-----------------------------------------------------------+
1052
+ | key | value |
1053
+ +--------------------+-----------------------------------------------------------+
1054
+ | ascp | /Users/laurent/.aspera/ascli/sdk/ascp |
1055
+ ...
826
1056
  ```
827
1057
 
828
1058
  ### Selection of local `ascp`
829
1059
 
1060
+ By default, `ascli` uses any found local product with ascp, including SDK.
1061
+
830
1062
  To temporarily use an alternate ascp path use option `ascp_path` (`--ascp-path=`)
831
1063
 
832
- To permanently use another ascp:
1064
+ For a permanent change, the command `config ascp use` sets the same parameter for the global default.
1065
+
1066
+ Using a POSIX shell:
833
1067
 
834
1068
  ```
835
1069
  $ ascli config ascp use '/Users/laurent/Applications/Aspera CLI/bin/ascp'
836
- saved to default global preset /Users/laurent/Applications/Aspera CLI/bin/ascp
1070
+ ascp version: 4.0.0.182279
1071
+ Updated: global_common_defaults: ascp_path <- /Users/laurent/Applications/Aspera CLI/bin/ascp
1072
+ Saved to default global preset global_common_defaults
837
1073
  ```
838
1074
 
839
- This sets up a global default.
1075
+ Windows:
1076
+
1077
+ ```
1078
+ $ ascli config ascp use C:\Users\admin\.aspera\ascli\sdk\ascp.exe
1079
+ ascp version: 4.0.0.182279
1080
+ Updated: global_common_defaults: ascp_path <- C:\Users\admin\.aspera\ascli\sdk\ascp.exe
1081
+ Saved to default global preset global_common_defaults
1082
+ ```
1083
+
1084
+ If the path has spaces, read section: [Shell and Command line parsing](#parsing).
840
1085
 
841
1086
  ### List locally installed Aspera Transfer products
842
1087
 
@@ -923,7 +1168,7 @@ will effectively push files to the related server from the agent node.
923
1168
 
924
1169
  ### <a name="direct"></a>Direct (local ascp using FASPManager API)
925
1170
 
926
- By default the CLI will use a local FASP protocol, equivalent to specifying `--transfer=direct`.
1171
+ By default `ascli` uses a local ascp, equivalent to specifying `--transfer=direct`.
927
1172
  `ascli` will detect locally installed Aspera products.
928
1173
  Refer to section [FASP](#client).
929
1174
 
@@ -933,17 +1178,33 @@ To specify a FASP proxy (only supported with the `direct` agent), set the approp
933
1178
  * `EX_http_proxy_url` (proxy for legacy http fallback)
934
1179
  * `EX_ascp_args`
935
1180
 
936
- The `transfer-info` optionally provides the following auto resume parameters:
1181
+ The `transfer-info` accepts the following optional parameters:
937
1182
 
938
1183
  <table>
939
- <tr><th>Name</th><th>Default</th><th>Feature</th><th>Description</th></tr>
940
- <tr><td>iter_max</td>. <td>7</td><td>Resume</td><td>Max number of retry on error</td></tr>
941
- <tr><td>sleep_initial</td><td>2</td><td>Resume</td><td>First Sleep before retry</td></tr>
942
- <tr><td>sleep_factor</td> <td>2</td><td>Resume</td><td>Multiplier of Sleep</td></tr>
943
- <tr><td>sleep_max</td>. <td>60</td><td>Resume</td><td>Maximum sleep</td></tr>
944
- <tr><td>wss</td> <td>false</td><td>Web Socket Session</td><td>Enable use of web socket session in case it is available</td></tr>
1184
+ <tr><th>Name</th><th>Type</th><th>Default</th><th>Feature</th><th>Description</th></tr>
1185
+ <tr><td>spawn_timeout_sec</td><td>Float</td><td>3</td><td>Multi session</td><td>Verification time that ascp is running</td></tr>
1186
+ <tr><td>spawn_delay_sec</td><td>Float</td><td>2</td><td>Multi session</td><td>Delay between startup of sessions</td></tr>
1187
+ <tr><td>wss</td><td>Bool</td><td>false</td><td>Web Socket Session</td><td>Enable use of web socket session in case it is available</td></tr>
1188
+ <tr><td>resume</td><td>Hash</td><td>nil</td><td>Resumer parameters</td><td>See below</td></tr>
945
1189
  </table>
946
1190
 
1191
+ Resume parameters:
1192
+
1193
+ <table>
1194
+ <tr><th>Name</th><th>Type</th><th>Default</th><th>Feature</th><th>Description</th></tr>
1195
+ <tr><td>iter_max</td><td>int</td><td>7</td><td>Resume</td><td>Max number of retry on error</td></tr>
1196
+ <tr><td>sleep_initial</td><td>int</td><td>2</td><td>Resume</td><td>First Sleep before retry</td></tr>
1197
+ <tr><td>sleep_factor</td><td>int</td><td>2</td><td>Resume</td><td>Multiplier of Sleep</td></tr>
1198
+ <tr><td>sleep_max</td><td>int</td><td>60</td><td>Resume</td><td>Maximum sleep</td></tr>
1199
+ </table>
1200
+
1201
+ Examples:
1202
+
1203
+ ```
1204
+ $ ascli ... --transfer-info=@json:'{"wss":true,"resume":{"iter_max":10}}'
1205
+ $ ascli ... --transfer-info=@json:'{"spawn_delay_sec":2.5}'
1206
+ ```
1207
+
947
1208
  ### IBM Aspera Connect Client GUI
948
1209
 
949
1210
  By specifying option: `--transfer=connect`, `ascli` will start transfers
@@ -975,9 +1236,11 @@ If it possible to send using a HTTP gateway, in case FASP is not allowed.
975
1236
  Example:
976
1237
 
977
1238
  ```
978
- $ ascli faspex package recv --id=323 --transfer=httpgw --transfer-info=@json:'{"url":"https://eudemo.asperademo.com:9443/aspera/http-gwy/v1"}'
1239
+ $ ascli faspex package recv --id=323 --transfer=httpgw --transfer-info=@json:'{"url":"https://asperagw.example.com:9443/aspera/http-gwy/v1"}'
979
1240
  ```
980
1241
 
1242
+ Note that the gateway only supports transfers authorized with a token.
1243
+
981
1244
  ## <a name="transferspec"></a>Transfer Specification
982
1245
 
983
1246
  Some commands lead to file transfer (upload/download), all parameters necessary for this transfer
@@ -991,7 +1254,7 @@ is described in a _transfer-spec_ (Transfer Specification), such as:
991
1254
 
992
1255
  `ascli` builds a default _transfer-spec_ internally, so it is not necessary to provide additional parameters on the command line for this transfer.
993
1256
 
994
- If needed, it is possible to modify or add any of the supported _transfer-spec_ parameter using the `ts` option. The `ts` option accepts a [Structured Value](#native) containing one or several _transfer-spec_ parameters.
1257
+ If needed, it is possible to modify or add any of the supported _transfer-spec_ parameter using the `ts` option. The `ts` option accepts a [Structured Value](#native) containing one or several _transfer-spec_ parameters. Multiple `ts` options on command line are cummulative.
995
1258
 
996
1259
  It is possible to specify ascp options when the `transfer` option is set to `direct` using the special [_transfer-spec_](#transferspec) parameter: `EX_ascp_args`. Example: `--ts=@json:'{"EX_ascp_args":["-l","100m"]}'`. This is espacially useful for ascp command line parameters not supported yet in the transfer spec.
997
1260
 
@@ -1028,7 +1291,7 @@ arg: related ascp argument or env var suffix (PASS for ASPERA_SCP_PASS)
1028
1291
  </p>
1029
1292
  <p>
1030
1293
  UNDER CONSTRUCTION<br/>
1031
- <a href="https://developer.ibm.com/api/view/aspera-prod:ibm-aspera:title-IBM_Aspera#id90944">Documentation&rarr;Node API&rarr;/opt/transfers</a><br/>
1294
+ <a href="https://developer.ibm.com/apis/catalog/?search=aspera">Aspera API Documentation</a>&rarr;Node API&rarr;/opt/transfers<br/>
1032
1295
  </p>
1033
1296
 
1034
1297
  <table>
@@ -1110,8 +1373,8 @@ The option `to_folder` provides an equivalent and convenient way to change this
1110
1373
 
1111
1374
  ### List of files for transfers
1112
1375
 
1113
- When uploading, downloading or sending files, the user must specify
1114
- the list of files to transfer. Most of the time, the list of files to transfer will be simply specified on the command line:
1376
+ When uploading, downloading or sending files, the user must specify the list of files to transfer.
1377
+ Most of the time, the list of files to transfer will be simply specified on the command line:
1115
1378
 
1116
1379
  ```
1117
1380
  $ ascli server upload ~/mysample.file secondfile
@@ -1125,7 +1388,8 @@ $ ascli server upload --sources=@args ~/mysample.file secondfile
1125
1388
 
1126
1389
  More advanced options are provided to adapt to various cases. In fact, list of files to transfer are conveyed using the [_transfer-spec_](#transferspec) using the field: "paths" which is a list (array) of pairs of "source" (mandatory) and "destination" (optional).
1127
1390
 
1128
- Note that this is different from the "ascp" command line. The paradigm used by `ascli` is: all transfer parameters are kept in [_transfer-spec_](#transferspec) so that execution of a transfer is independent of the transfer agent. Note that other IBM Aspera interfaces use this: connect, node, transfer sdk.
1391
+ Note that this is different from the "ascp" command line. The paradigm used by `ascli` is:
1392
+ all transfer parameters are kept in [_transfer-spec_](#transferspec) so that execution of a transfer is independent of the transfer agent. Note that other IBM Aspera interfaces use this: connect, node, transfer sdk.
1129
1393
 
1130
1394
  For ease of use and flexibility, the list of files to transfer is specified by the option `sources`. Accepted values are:
1131
1395
 
@@ -1242,6 +1506,8 @@ A non complete list of commands used in unit tests:
1242
1506
  ```
1243
1507
  ascli
1244
1508
  ascli -h
1509
+ ascli aoc -N remind --username=my_aoc_user_email
1510
+ ascli aoc -N servers
1245
1511
  ascli aoc admin analytics transfers --query=@json:'{"status":"completed","direction":"receive"}'
1246
1512
  ascli aoc admin ats access_key --id=akibmcloud --secret=somesecret node browse /
1247
1513
  ascli aoc admin ats access_key --id=akibmcloud delete
@@ -1252,6 +1518,26 @@ ascli aoc admin ats cluster clouds
1252
1518
  ascli aoc admin ats cluster list
1253
1519
  ascli aoc admin ats cluster show --cloud=aws --region=eu-west-1
1254
1520
  ascli aoc admin ats cluster show --id=1f412ae7-869a-445c-9c05-02ad16813be2
1521
+ ascli aoc admin res apps_new list
1522
+ ascli aoc admin res client list
1523
+ ascli aoc admin res client_access_key list
1524
+ ascli aoc admin res client_registration_token --id=my_clt_reg_id delete
1525
+ ascli aoc admin res client_registration_token create @json:'{"data":{"name":"test_client_reg1","client_subject_scopes":["alee","aejd"],"client_subject_enabled":true}}'
1526
+ ascli aoc admin res client_registration_token list
1527
+ ascli aoc admin res contact list
1528
+ ascli aoc admin res dropbox list
1529
+ ascli aoc admin res dropbox_membership list
1530
+ ascli aoc admin res group list
1531
+ ascli aoc admin res kms_profile list
1532
+ ascli aoc admin res node list
1533
+ ascli aoc admin res operation list
1534
+ ascli aoc admin res organization show
1535
+ ascli aoc admin res package list
1536
+ ascli aoc admin res saml_configuration list
1537
+ ascli aoc admin res self show
1538
+ ascli aoc admin res short_link list
1539
+ ascli aoc admin res user list
1540
+ ascli aoc admin res workspace_membership list
1255
1541
  ascli aoc admin resource node --name=AOC_NODE1_NAME --secret=AOC_NODE1_SECRET v3 access_key create --value=@json:'{"id":"testsub1","storage":{"path":"/folder1"}}'
1256
1542
  ascli aoc admin resource node --name=AOC_NODE1_NAME --secret=AOC_NODE1_SECRET v3 access_key delete --id=testsub1
1257
1543
  ascli aoc admin resource node --name=AOC_NODE1_NAME --secret=AOC_NODE1_SECRET v3 events
@@ -1260,7 +1546,6 @@ ascli aoc admin resource node --name=AOC_NODE1_NAME --secret=AOC_NODE1_SECRET v4
1260
1546
  ascli aoc admin resource node --name=AOC_NODE1_NAME --secret=AOC_NODE1_SECRET v4 mkdir /folder1
1261
1547
  ascli aoc admin resource workspace list
1262
1548
  ascli aoc admin resource workspace_membership list --fields=ALL --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
1263
- ascli aoc apiinfo
1264
1549
  ascli aoc automation workflow --id="my_wf_id" action create --value=@json:'{"name":"toto"}' | tee action.info
1265
1550
  ascli aoc automation workflow create --value=@json:'{"name":"test_workflow"}'
1266
1551
  ascli aoc automation workflow delete --id="my_wf_id"
@@ -1274,7 +1559,7 @@ ascli aoc files browse /
1274
1559
  ascli aoc files browse / -N --link=my_aoc_publink_folder
1275
1560
  ascli aoc files delete /testsrc
1276
1561
  ascli aoc files download --transfer=connect /200KB.1
1277
- ascli aoc files file 18891
1562
+ ascli aoc files file --id=my_file_id show
1278
1563
  ascli aoc files find / --value='\.partial$'
1279
1564
  ascli aoc files http_node_download --to-folder=. /200KB.1
1280
1565
  ascli aoc files mkdir /testsrc
@@ -1295,7 +1580,7 @@ ascli aoc packages recv --id=ALL --to-folder=. --once-only=yes --lock-port=12345
1295
1580
  ascli aoc packages send --value=@json:'{"name":"Important files delivery","recipients":["external.user@example.com"]}' --new-user-option=@json:'{"package_contact":true}' testfile.bin
1296
1581
  ascli aoc packages send --value=@json:'{"name":"Important files delivery","recipients":["internal.user@example.com"],"note":"my note"}' testfile.bin
1297
1582
  ascli aoc packages send --workspace="my_aoc_shbx_ws" --value=@json:'{"name":"Important files delivery","recipients":["my_aoc_shbx_name"]}' testfile.bin
1298
- ascli aoc packages send -N --value=@json:'{"name":"Important files delivery"}' testfile.bin --link=my_aoc_publink_send_aoc_user
1583
+ ascli aoc packages send -N --value=@json:'{"name":"Important files delivery"}' testfile.bin --link=my_aoc_publink_send_aoc_user --password=my_aoc_publink_send_use_pass
1299
1584
  ascli aoc packages send -N --value=@json:'{"name":"Important files delivery"}' testfile.bin --link=my_aoc_publink_send_shd_inbox
1300
1585
  ascli aoc user info modify @json:'{"name":"dummy change"}'
1301
1586
  ascli aoc user info show
@@ -1315,8 +1600,8 @@ ascli ats cluster list
1315
1600
  ascli ats cluster show --cloud=aws --region=eu-west-1
1316
1601
  ascli ats cluster show --id=1f412ae7-869a-445c-9c05-02ad16813be2
1317
1602
  ascli conf flush_tokens
1318
- ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=my_aoc_user --test-mode=yes
1319
- ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=my_aoc_user --test-mode=yes --use-generic-client=yes
1603
+ ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=my_aoc_user_email --test-mode=yes
1604
+ ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=my_aoc_user_email --test-mode=yes --use-generic-client=yes
1320
1605
  ascli config ascp connect id 'Aspera Connect for Windows' info
1321
1606
  ascli config ascp connect id 'Aspera Connect for Windows' links id 'Windows Installer' download --to-folder=.
1322
1607
  ascli config ascp connect id 'Aspera Connect for Windows' links list
@@ -1325,6 +1610,9 @@ ascli config ascp info
1325
1610
  ascli config ascp install
1326
1611
  ascli config ascp products list
1327
1612
  ascli config ascp show
1613
+ ascli config check_update
1614
+ ascli config doc
1615
+ ascli config doc transfer-parameters
1328
1616
  ascli config email_test aspera.user1@gmail.com
1329
1617
  ascli config export
1330
1618
  ascli config genkey mykey
@@ -1332,28 +1620,29 @@ ascli config plugins
1332
1620
  ascli config proxy_check --fpac=file:///examples/proxy.pac https://eudemo.asperademo.com
1333
1621
  ascli console transfer current list
1334
1622
  ascli console transfer smart list
1335
- ascli console transfer smart sub 112 @json:'{"source":{"paths":["10MB.1"]},"source_type":"user_selected"}'
1623
+ ascli console transfer smart sub my_job_id @json:'{"source":{"paths":["my_file_name"]},"source_type":"user_selected"}'
1336
1624
  ascli cos -N --bucket=my_icos_bucket_name --endpoint=my_icos_bucket_endpoint --apikey=my_icos_bucket_apikey --crn=my_icos_resource_instance_id node info
1337
1625
  ascli cos -N --bucket=my_icos_bucket_name --region=my_icos_bucket_region --service-credentials=@json:@file:service_creds.json node info
1338
1626
  ascli cos node access_key --id=self show
1339
1627
  ascli cos node download testfile.bin --to-folder=.
1340
1628
  ascli cos node info
1341
1629
  ascli cos node upload testfile.bin
1342
- ascli faspex nagios_check
1630
+ ascli faspex health
1343
1631
  ascli faspex package list
1344
1632
  ascli faspex package list --box=sent --fields=package_id --format=csv --display=data|tail -n 1);\
1345
- ascli faspex package recv --box=sent --to-folder=. --id="my_package_id"
1633
+ ascli faspex package list --fields=package_id --format=csv --display=data|tail -n 1);\
1634
+ ascli faspex package recv --to-folder=. --box=sent --id="my_package_id"
1346
1635
  ascli faspex package recv --to-folder=. --id="my_package_id"
1347
1636
  ascli faspex package recv --to-folder=. --id=ALL --once-only=yes
1348
1637
  ascli faspex package recv --to-folder=. --link="my_faspex_publink_recv_from_fxuser"
1349
- ascli faspex package send --delivery-info=@json:'{"title":"Important files delivery","recipients":["internal.user@example.com"]}' testfile.bin
1638
+ ascli faspex package send --delivery-info=@json:'{"title":"Important files delivery","recipients":["internal.user@example.com","FASPEX_USERNAME"]}' testfile.bin
1350
1639
  ascli faspex package send --link="my_faspex_publink_send_to_dropbox" --delivery-info=@json:'{"title":"Important files delivery"}' testfile.bin
1351
1640
  ascli faspex package send --link="my_faspex_publink_send_to_fxuser" --delivery-info=@json:'{"title":"Important files delivery"}' testfile.bin
1352
1641
  ascli faspex source name "Server Files" node br /
1353
1642
  ascli faspex5 node list --value=@json:'{"type":"received","subtype":"mypackages"}'
1354
- ascli faspex5 package list --value=@json:'{"state":["released"]}'
1643
+ ascli faspex5 package list --value=@json:'{"mailbox":"inbox","state":["released"]}'
1355
1644
  ascli faspex5 package receive --id="my_package_id" --to-folder=.
1356
- ascli faspex5 package send --value=@json:'{"title":"test title","recipients":["admin"]}' testfile.bin
1645
+ ascli faspex5 package send --value=@json:'{"title":"test title","recipients":[{"name":"${f5_user}"}]}' testfile.bin
1357
1646
  ascli node -N -Ptst_node_preview access_key create --value=@json:'{"id":"aoc_1","storage":{"type":"local","path":"/"}}'
1358
1647
  ascli node -N -Ptst_node_preview access_key delete --id=aoc_1
1359
1648
  ascli node async --id=1 bandwidth
@@ -1367,8 +1656,8 @@ ascli node browse / -r
1367
1656
  ascli node delete folder_1/10MB.1
1368
1657
  ascli node delete folder_1/testfile.bin
1369
1658
  ascli node download --to-folder=. folder_1/testfile.bin
1659
+ ascli node health
1370
1660
  ascli node info
1371
- ascli node nagios_check
1372
1661
  ascli node search / --value=@json:'{"sort":"mtime"}'
1373
1662
  ascli node service --id=service1 delete
1374
1663
  ascli node service create @json:'{"id":"service1","type":"WATCHD","run_as":{"user":"user1"}}'
@@ -1398,7 +1687,8 @@ ascli preview test --case=test png "TSTFILE_MXF" --video-png-conv=fixed --log-le
1398
1687
  ascli preview test --case=test png "TSTFILE_PDF" --log-level=debug
1399
1688
  ascli preview trevents --once-only=yes --skip-types=office --log-level=info
1400
1689
  ascli server -N -Ptst_hstsfaspex_ssh -Plocal_user ctl all:status
1401
- ascli server -N -Ptst_hstsfaspex_ssh -Plocal_user nagios app_services --format=nagios
1690
+ ascli server -N -Ptst_hstsfaspex_ssh -Plocal_user health app_services --format=nagios
1691
+ ascli server -N -Ptst_hstsfaspex_ssh -Plocal_user health asctlstatus --format=nagios --cmd-prefix='sudo '
1402
1692
  ascli server -N -Ptst_hstsfaspex_ssh -Plocal_user nodeadmin -- -l
1403
1693
  ascli server -N -Ptst_server_bykey -Plocal_user br /
1404
1694
  ascli server browse /
@@ -1408,24 +1698,27 @@ ascli server delete NEW_SERVER_FOLDER
1408
1698
  ascli server delete folder_1/target_hot
1409
1699
  ascli server delete folder_1/to.delete
1410
1700
  ascli server df
1411
- ascli server download NEW_SERVER_FOLDER/testfile.bin --to-folder=.
1701
+ ascli server download NEW_SERVER_FOLDER/testfile.bin --to-folder=. --transfer-info=@json:'{"wss":false,"resume":{"iter_max":1}}'
1412
1702
  ascli server download NEW_SERVER_FOLDER/testfile.bin --to-folder=folder_1 --transfer=node
1413
1703
  ascli server du /
1704
+ ascli server health transfer --to-folder=folder_1 --format=nagios
1414
1705
  ascli server info
1415
1706
  ascli server md5sum NEW_SERVER_FOLDER/testfile.bin
1416
1707
  ascli server mkdir NEW_SERVER_FOLDER --logger=stdout
1417
1708
  ascli server mkdir folder_1/target_hot
1418
1709
  ascli server mv folder_1/200KB.2 folder_1/to.delete
1419
- ascli server nagios transfer --to-folder=folder_1 --format=nagios
1420
1710
  ascli server upload --sources=@ts --ts=@json:'{"paths":[{"source":"testfile.bin","destination":"NEW_SERVER_FOLDER/othername"}]}'
1421
1711
  ascli server upload --src-type=pair --sources=@json:'["testfile.bin","NEW_SERVER_FOLDER/othername"]'
1422
1712
  ascli server upload --src-type=pair testfile.bin NEW_SERVER_FOLDER/othername
1423
1713
  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
1424
- ascli server upload testfile.bin --to-folder=NEW_SERVER_FOLDER
1714
+ 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
+ ascli shares admin share list
1425
1716
  ascli shares repository browse /
1426
1717
  ascli shares repository delete /SHARES_UPLOAD/testfile.bin
1427
1718
  ascli shares repository download --to-folder=. /SHARES_UPLOAD/testfile.bin
1719
+ ascli shares repository download --to-folder=. /SHARES_UPLOAD/testfile.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://HTTP_GW_FQDN/aspera/http-gwy/v1"}'
1428
1720
  ascli shares repository upload --to-folder=/SHARES_UPLOAD testfile.bin
1721
+ ascli shares repository upload --to-folder=/SHARES_UPLOAD testfile.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://HTTP_GW_FQDN/aspera/http-gwy/v1"}'
1429
1722
  ascli shares2 appinfo
1430
1723
  ascli shares2 organization list
1431
1724
  ascli shares2 project list --organization=Sport
@@ -1441,7 +1734,7 @@ ascli sync start --parameters=@json:'{"sessions":[{"name":"test","reset":true,"r
1441
1734
  ```
1442
1735
  $ ascli -h
1443
1736
  NAME
1444
- ascli -- a command line tool for Aspera Applications (v4.0.0.pre3)
1737
+ ascli -- a command line tool for Aspera Applications (v4.2.1)
1445
1738
 
1446
1739
  SYNOPSIS
1447
1740
  ascli COMMANDS [OPTIONS] [ARGS]
@@ -1452,6 +1745,10 @@ DESCRIPTION
1452
1745
  execute: ascli conf doc
1453
1746
  or visit: http://www.rubydoc.info/gems/aspera-cli
1454
1747
 
1748
+ ENVIRONMENT VARIABLES
1749
+ ASCLI_HOME config folder, default: $HOME/.aspera/ascli
1750
+ #any option can be set as an environment variable, refer to the manual
1751
+
1455
1752
  COMMANDS
1456
1753
  To list first level commands, execute: ascli
1457
1754
  Note that commands can be written shortened (provided it is unique).
@@ -1480,7 +1777,7 @@ OPTIONS: global
1480
1777
  -v, --version display version
1481
1778
  -w, --warnings check for language warnings
1482
1779
  --ui=ENUM method to start browser: text, graphical
1483
- --log-level=ENUM Log level: debug, info, error, warn, fatal, unknown
1780
+ --log-level=ENUM Log level: debug, info, warn, error, fatal, unknown
1484
1781
  --logger=ENUM log method: stderr, stdout, syslog
1485
1782
  --lock-port=VALUE prevent dual execution of a command, e.g. in cron
1486
1783
  --query=VALUE additional filter for API calls (extended value) (some commands)
@@ -1488,7 +1785,7 @@ OPTIONS: global
1488
1785
  --once-only=ENUM process only new items (some commands): yes, no
1489
1786
 
1490
1787
  COMMAND: config
1491
- SUBCOMMANDS: gem_path genkey plugins flush_tokens list overview open echo id documentation wizard export_to_cli detect coffee ascp email_test smtp_settings proxy_check folder file
1788
+ SUBCOMMANDS: gem_path genkey plugins flush_tokens list overview open echo id documentation wizard export_to_cli detect coffee ascp email_test smtp_settings proxy_check folder file check_update initdemo
1492
1789
  OPTIONS:
1493
1790
  --value=VALUE extended value for create, update, list filter
1494
1791
  --property=VALUE name of property to set
@@ -1504,10 +1801,13 @@ OPTIONS:
1504
1801
  --fpac=VALUE proxy auto configuration URL
1505
1802
  -P, --presetVALUE load the named option preset from current config file
1506
1803
  --default=VALUE set as default configuration for specified plugin
1507
- --secret=VALUE access key secret for node
1508
- --secrets=VALUE access key secret for node
1804
+ --secret=VALUE default secret
1805
+ --secrets=VALUE secret repository (Hash)
1806
+ --sdk-url=VALUE URL to get SDK
1807
+ --sdk-folder=VALUE SDK folder location
1509
1808
  --test-mode=ENUM skip user validation in wizard mode: yes, no
1510
- --ts=VALUE override transfer spec values (Hash, use @json: prefix), current={}
1809
+ --version-check-days=VALUE period to check neew version in days (zero to disable)
1810
+ --ts=VALUE override transfer spec values (Hash, use @json: prefix), current={"create_dir"=>true}
1511
1811
  --local-resume=VALUE set resume policy (Hash, use @json: prefix), current=
1512
1812
  --to-folder=VALUE destination folder for downloaded files
1513
1813
  --sources=VALUE list of source files (see doc)
@@ -1526,7 +1826,7 @@ OPTIONS:
1526
1826
 
1527
1827
 
1528
1828
  COMMAND: node
1529
- SUBCOMMANDS: postprocess stream transfer cleanup forward access_key watch_folder service async central asperabrowser basic_token browse upload download api_details nagios_check events space info license mkdir mklink mkfile rename delete search
1829
+ SUBCOMMANDS: postprocess stream transfer cleanup forward access_key watch_folder service async central asperabrowser basic_token browse upload download api_details health events space info license mkdir mklink mkfile rename delete search
1530
1830
  OPTIONS:
1531
1831
  --url=VALUE URL of application, e.g. https://org.asperafiles.com
1532
1832
  --username=VALUE username to log in
@@ -1579,11 +1879,16 @@ OPTIONS:
1579
1879
 
1580
1880
 
1581
1881
  COMMAND: faspex5
1582
- SUBCOMMANDS: node package
1882
+ SUBCOMMANDS: node package auth_client jobs
1583
1883
  OPTIONS:
1584
1884
  --url=VALUE URL of application, e.g. https://org.asperafiles.com
1585
1885
  --username=VALUE username to log in
1586
1886
  --password=VALUE user's password
1887
+ --client-id=VALUE API client identifier in application
1888
+ --client-secret=VALUE API client secret in application
1889
+ --redirect-uri=VALUE API client redirect URI
1890
+ --auth=ENUM type of Oauth authentication: body_userpass, header_userpass, web, jwt, url_token, ibm_apikey, boot
1891
+ --private-key=VALUE RSA private key PEM value for JWT (prefix file path with @val:@file:)
1587
1892
 
1588
1893
 
1589
1894
  COMMAND: cos
@@ -1598,7 +1903,7 @@ OPTIONS:
1598
1903
 
1599
1904
 
1600
1905
  COMMAND: faspex
1601
- SUBCOMMANDS: nagios_check package source me dropbox v4 address_book login_methods
1906
+ SUBCOMMANDS: health package source me dropbox v4 address_book login_methods
1602
1907
  OPTIONS:
1603
1908
  --url=VALUE URL of application, e.g. https://org.asperafiles.com
1604
1909
  --username=VALUE username to log in
@@ -1607,6 +1912,7 @@ OPTIONS:
1607
1912
  --delivery-info=VALUE package delivery information (extended value)
1608
1913
  --source-name=VALUE create package from remote source (by name)
1609
1914
  --storage=VALUE Faspex local storage definition
1915
+ --recipient=VALUE use if recipient is a dropbox (with *)
1610
1916
  --box=ENUM package box: inbox, sent, archive
1611
1917
 
1612
1918
 
@@ -1636,6 +1942,7 @@ OPTIONS:
1636
1942
  --case=VALUE basename of output for for test
1637
1943
  --scan-path=VALUE subpath in folder id to start scan in (default=/)
1638
1944
  --scan-id=VALUE forder id in storage to start scan in, default is access key main folder id
1945
+ --mimemagic=ENUM use Mime type detection of gem mimemagic: yes, no
1639
1946
  --overwrite=ENUM when to overwrite result file: always, never, mtime
1640
1947
  --file-access=ENUM how to read and write files in repository: local, remote
1641
1948
  --max-size=VALUE maximum size (in bytes) of preview file
@@ -1662,42 +1969,31 @@ OPTIONS:
1662
1969
 
1663
1970
 
1664
1971
  COMMAND: aoc
1665
- SUBCOMMANDS: apiinfo bearer_token organization tier_restrictions user workspace packages files gateway admin automation servers
1972
+ SUBCOMMANDS: reminder bearer_token organization tier_restrictions user workspace packages files gateway admin automation servers
1666
1973
  OPTIONS:
1667
1974
  --url=VALUE URL of application, e.g. https://org.asperafiles.com
1668
1975
  --username=VALUE username to log in
1669
1976
  --password=VALUE user's password
1670
-
1671
- COMMAND: ats
1672
- SUBCOMMANDS: cluster access_key api_key aws_trust_policy
1673
- OPTIONS:
1674
- --ibm-api-key=VALUE IBM API key, see https://cloud.ibm.com/iam/apikeys
1675
- --instance=VALUE ATS instance in ibm cloud
1676
- --ats-key=VALUE ATS key identifier (ats_xxx)
1677
- --ats-secret=VALUE ATS key secret
1678
- --params=VALUE Parameters access key creation (@json:)
1679
- --cloud=VALUE Cloud provider
1680
- --region=VALUE Cloud region
1681
- --auth=ENUM type of Oauth authentication: body_userpass, header_userpass, web, jwt, url_token, ibm_apikey
1977
+ --auth=ENUM OAuth type of authentication: body_userpass, header_userpass, web, jwt, url_token, ibm_apikey
1682
1978
  --operation=ENUM client operation for transfers: push, pull
1683
- --client-id=VALUE API client identifier in application
1684
- --client-secret=VALUE API client passcode
1685
- --redirect-uri=VALUE API client redirect URI
1686
- --private-key=VALUE RSA private key PEM value for JWT (prefix file path with @val:@file:)
1979
+ --client-id=VALUE OAuth API client identifier in application
1980
+ --client-secret=VALUE OAuth API client passcode
1981
+ --redirect-uri=VALUE OAuth API client redirect URI
1982
+ --private-key=VALUE OAuth JWT RSA private key PEM value (prefix file path with @val:@file:)
1687
1983
  --workspace=VALUE name of workspace
1688
- --eid=VALUE identifier
1689
1984
  --name=VALUE resource name
1985
+ --path=VALUE file or folder path
1690
1986
  --link=VALUE public link to shared resource
1691
1987
  --new-user-option=VALUE new user creation option
1692
1988
  --from-folder=VALUE share to share source folder
1693
- --scope=VALUE scope for AoC API calls
1989
+ --scope=VALUE OAuth scope for AoC API calls
1694
1990
  --notify=VALUE notify users that file was received
1695
1991
  --bulk=ENUM bulk operation: yes, no
1696
1992
  --default-ports=ENUM use standard FASP ports or get from node api: yes, no
1697
1993
 
1698
1994
 
1699
1995
  COMMAND: server
1700
- SUBCOMMANDS: nagios nodeadmin userdata configurator ctl download upload browse delete rename ls rm mv du info mkdir cp df md5sum
1996
+ SUBCOMMANDS: health nodeadmin userdata configurator ctl download upload browse delete rename ls rm mv du info mkdir cp df md5sum
1701
1997
  OPTIONS:
1702
1998
  --url=VALUE URL of application, e.g. https://org.asperafiles.com
1703
1999
  --username=VALUE username to log in
@@ -1708,7 +2004,7 @@ OPTIONS:
1708
2004
 
1709
2005
 
1710
2006
  COMMAND: console
1711
- SUBCOMMANDS: transfer nagios_check
2007
+ SUBCOMMANDS: transfer health
1712
2008
  OPTIONS:
1713
2009
  --url=VALUE URL of application, e.g. https://org.asperafiles.com
1714
2010
  --username=VALUE username to log in
@@ -1835,7 +2131,7 @@ updated: my_aoc_org
1835
2131
  Define this [option preset](#lprt) as default configuration for the `aspera` plugin:
1836
2132
 
1837
2133
  ```
1838
- $ ascli config id default set aspera my_aoc_org
2134
+ $ ascli config id default set aoc my_aoc_org
1839
2135
  ```
1840
2136
 
1841
2137
  Note: Default `auth` method is `web` and default `redirect_uri` is `http://localhost:12345`. Leave those default values.
@@ -2209,7 +2505,7 @@ Then, create two shared folders located in two regions, in your files home, in a
2209
2505
  Then, transfer between those:
2210
2506
 
2211
2507
  ```
2212
- $ ascli -Paoc_show aspera files transfer --from-folder='IBM Cloud SJ' --to-folder='AWS Singapore' 100GB.file --ts=@json:'{"target_rate_kbps":"1000000","multi_session":10,"multi_session_threshold":1}'
2508
+ $ ascli -Paoc_show aoc files transfer --from-folder='IBM Cloud SJ' --to-folder='AWS Singapore' 100GB.file --ts=@json:'{"target_rate_kbps":"1000000","multi_session":10,"multi_session_threshold":1}'
2213
2509
  ```
2214
2510
 
2215
2511
  * create registration key to register a node
@@ -2272,8 +2568,9 @@ Notes:
2272
2568
  Examples:
2273
2569
 
2274
2570
  ```
2275
- $ ascli aoc packages send --value=@json:'{"name":"my title","note":"my note","recipients":["laurent.martin.aspera@fr.ibm.com","other@example.com"]}' --sources=@args my_file.dat
2276
- $ ascli aoc packages send --value=@json:'{"name":"my file in shared inbox","recipients":["The Shared Inbox"]}' my_file.dat --ts=@json:'{"target_rate_kbps":100000}'
2571
+ $ ascli aoc package send --value=@json:'{"name":"my title","note":"my note","recipients":["laurent.martin.aspera@fr.ibm.com","other@example.com"]}' --sources=@args my_file.dat
2572
+ $ ascli aoc package send --value=@json:'{"name":"my file in shared inbox","recipients":["The Shared Inbox"]}' my_file.dat --ts=@json:'{"target_rate_kbps":100000}'
2573
+ $ ascli aoc package send --workspace=eudemo --value=@json:'{"name":"my pack title","recipients":["Shared Inbox Name"],"metadata":[{"input_type":"single-text","name":"Project Id","values":["123"]},{"input_type":"single-dropdown","name":"Type","values":["Opt2"]},{"input_type":"multiple-checkbox","name":"CheckThose","values":["Check1","Check2"]},{"input_type":"date","name":"Optional Date","values":["2021-01-13T15:02:00.000Z"]}]}' ~/Documents/Samples/200KB.1
2277
2574
  ```
2278
2575
 
2279
2576
  ## <a name="aoccargo"></a>Receive new packages only
@@ -2288,10 +2585,10 @@ $ ascli aoc packages recv --id=ALL --once-only=yes --lock-port=12345
2288
2585
  * `--once-only=yes` keeps memory of any downloaded package in persistency files located in the configuration folder.
2289
2586
  * `--lock-port=12345` ensures that only one instance is started at the same time, to avoid collisions
2290
2587
 
2291
- Typically, one would regularly execute this command on a regular basis, using the method oif your choice:
2588
+ Typically, one would regularly execute this command on a regular basis, using the method of your choice:
2292
2589
 
2293
- * Windows scheduler
2294
- * cron
2590
+ * Windows: [Task Scheduler](https://docs.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page)
2591
+ * Linux/Unix: [cron](https://www.man7.org/linux/man-pages/man5/crontab.5.html)
2295
2592
  * etc...
2296
2593
 
2297
2594
  ## Download Files
@@ -2511,7 +2808,7 @@ This can also be set as default using a preset
2511
2808
  One can test the "server" application using the well known demo server:
2512
2809
 
2513
2810
  ```
2514
- $ ascli config id aspera_demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=demoaspera
2811
+ $ ascli config id aspera_demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=_demo_pass_
2515
2812
  $ ascli config id default set server aspera_demo_server
2516
2813
  $ ascli server browse /aspera-test-dir-large
2517
2814
  $ ascli server download /aspera-test-dir-large/200MB
@@ -2607,25 +2904,80 @@ to download files.
2607
2904
  $ ascli node access_key create --value=@json:'{"id":"eudemo-sedemo","secret":"mystrongsecret","storage":{"type":"local","path":"/data/asperafiles"}}'
2608
2905
  ```
2609
2906
 
2610
- # Plugin: IBM Aspera Faspex
2907
+ # Plugin: IBM Aspera Faspex5
2611
2908
 
2612
- Note that the command "v4" requires the use of APIv4, refer to the Faspex Admin manual on how to activate.
2909
+ 3 authentication methods are supported:
2613
2910
 
2614
- ## Sending a Package
2911
+ * boot
2912
+ * web
2913
+ * jwt
2615
2914
 
2616
- Provide delivery info in JSON, example:
2915
+ For boot method:
2916
+
2917
+ * open a browser
2918
+ * start developer mode
2919
+ * login to faspex 5
2920
+ * find the first API call with `Authorization` token, and copy it (kind of base64 long string)
2921
+
2922
+ Use it as password and use `--auth=boot`.
2923
+
2924
+ ```
2925
+ $ ascli conf id f5boot update --url=https://localhost/aspera/faspex --auth=boot --password=ABC.DEF.GHI...
2926
+ ```
2927
+
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
+ Ready to use Faspex5 with CLI.
2934
+
2935
+ Once the graphical registration form exist, ther bootstrap method can be removed.
2936
+
2937
+ # Plugin: IBM Aspera Faspex (4.x)
2938
+
2939
+ Notes:
2940
+
2941
+ * the command "v4" requires the use of APIv4, refer to the Faspex Admin manual on how to activate.
2942
+ * for full details on Faspex API, refer to: [Reference on Developer Site](https://www.ibm.com/products/aspera/developer)
2943
+
2944
+ ## Receiving a Package
2945
+
2946
+ The command is `package recv`, possible methosd are:
2947
+
2948
+ * provide a package id with option `id`
2949
+ * provide a public link with option `link`
2950
+ * provide a `faspe:` URI with option `link`
2617
2951
 
2618
2952
  ```
2619
- --delivery-info=@json:'{"title":"my title","recipients":["laurent.martin.aspera@fr.ibm.com"]}'
2953
+ $ ascli faspex package recv --id=12345
2954
+ $ ascli faspex package recv --link=faspe://...
2620
2955
  ```
2621
2956
 
2622
- a note can be added: `"note":"Please ..."`
2957
+ If the package is in a specific dropbox, add option `recipient` for both the `list` and `recv` commands.
2623
2958
 
2624
- metadata: `"metadata":{"Meta1":"Val1","Meta2":"Val2"}`
2959
+ ```
2960
+ $ ascli faspex package list --recipient='*thedropboxname'
2961
+ ```
2962
+
2963
+
2964
+
2965
+ ## Sending a Package
2966
+
2967
+ The command is `faspex package send`. Package information (title, note, metadata, options) is provided in option `delivery_info`. (Refer to Faspex API).
2968
+
2969
+ Example:
2970
+
2971
+ ```
2972
+ $ ascli faspex package send --delivery-info=@json:'{"title":"my title","recipients":["laurent.martin.aspera@fr.ibm.com"]}' --url=https://faspex.corp.com/aspera/faspex --username=foo --password=bar /tmp/file1 /home/bar/file2
2973
+ ```
2625
2974
 
2975
+ If the recipient is a dropbox, just provide the name of the dropbox in `recipients`: `"recipients":["My Dropbox Name"]`
2626
2976
 
2627
- Note for full details, refer to:
2628
- [Reference on Developer Site](https://developer.asperasoft.com/web/faspex/sending)
2977
+ Additional optional parameters in `delivery_info`:
2978
+
2979
+ * Package Note: : `"note":"note this and that"`
2980
+ * Package Metadata: `"metadata":{"Meta1":"Val1","Meta2":"Val2"}`
2629
2981
 
2630
2982
  ## operation on dropboxes
2631
2983
 
@@ -2688,6 +3040,8 @@ $ for p in 1 2 3;do ascli shares2 admin users list --value=@json:'{"page":'$p'}'
2688
3040
  # Plugin: IBM Cloud Object Storage
2689
3041
 
2690
3042
  The IBM Cloud Object Storage provides the possibility to execute transfers using FASP.
3043
+ It uses the same transfer service as Aspera on Cloud.
3044
+ see [https://status.aspera.io](https://status.aspera.io)
2691
3045
 
2692
3046
  Required options are either:
2693
3047
 
@@ -2744,7 +3098,14 @@ Endpoints for regions can be found by querying the `endpoints` URL.
2744
3098
  For convenience, let us create a default configuration, for example:
2745
3099
 
2746
3100
  ```
2747
- $ ascli conf id mycos update --service-credentials=@val:@json:@file:$HOME/service_creds.json --region=us-south --bucket=laurent
3101
+ $ ascli conf id mycos update --bucket=laurent --service-credentials=@val:@json:@file:~/service_creds.json --region=us-south
3102
+ $ ascli conf id default set cos mycos
3103
+ ```
3104
+
3105
+ or using direct parameters:
3106
+
3107
+ ```
3108
+ $ ascli conf id mycos update --bucket=mybucket --endpoint=https://s3.us-east.cloud-object-storage.appdomain.cloud --apikey=abcdefgh --crn=crn:v1:bluemix:public:iam-identity::a/xxxxxxx
2748
3109
  $ ascli conf id default set cos mycos
2749
3110
  ```
2750
3111
 
@@ -2762,7 +3123,7 @@ to start from ma configuration file, using `ascli` standard options.
2762
3123
 
2763
3124
  # Plugin: Preview
2764
3125
 
2765
- The `preview` generates "previews" of graphical files, i.e. thumbnails (office, images, video) and video previews on an Aspera HSTS for use primarily in the Aspera on Cloud application.
3126
+ The `preview` generates "previews" of graphical files, i.e. thumbnails (office, images, video) and video previews on storage for use primarily in the Aspera on Cloud application.
2766
3127
  This is based on the "node API" of Aspera HSTS when using Access Keys only inside it's "storage root".
2767
3128
  Several parameters can be used to tune several aspects:
2768
3129
 
@@ -2810,6 +3171,7 @@ The tool requires the following external tools available in the `PATH`:
2810
3171
  * OptiPNG : `optipng`
2811
3172
  * FFmpeg : `ffmpeg` `ffprobe`
2812
3173
  * Libreoffice : `libreoffice`
3174
+ * ruby gem `mimemagic`
2813
3175
 
2814
3176
  Here shown on Redhat/CentOS.
2815
3177
 
@@ -2821,6 +3183,26 @@ To check if all tools are found properly, execute:
2821
3183
  $ ascli preview check
2822
3184
  ```
2823
3185
 
3186
+ ### mimemagic
3187
+
3188
+ To benefit from extra mime type detection install gem mimemagic:
3189
+
3190
+ ```
3191
+ # gem install mimemagic
3192
+ ```
3193
+
3194
+ or to install an earlier version if any problem:
3195
+
3196
+ ```
3197
+ # gem install mimemagic -v '~> 0.3.0'
3198
+ ```
3199
+
3200
+ To use it, set option `mimemagic` to `yes`: `--mimemagic=yes`
3201
+
3202
+ If not used, Mime type used for conversion is the one provided by the node API.
3203
+
3204
+ If used, it the `preview` command will first analyse the file content using mimemagic, and if no match, will try by extension.
3205
+
2824
3206
  ### Image: Imagemagick and optipng
2825
3207
 
2826
3208
  ```
@@ -2845,90 +3227,111 @@ The generation of preview in based on the use of `unoconv` and `libreoffice`
2845
3227
  # dnf install unoconv
2846
3228
  ```
2847
3229
 
3230
+ * Amazon Linux
3231
+
3232
+ ```
3233
+ # amazon-linux-extras enable libreoffice
3234
+ # yum clean metadata
3235
+ # yum install libreoffice-core libreoffice-calc libreoffice-opensymbol-fonts libreoffice-ure libreoffice-writer libreoffice-pyuno libreoffice-impress
3236
+ # wget https://raw.githubusercontent.com/unoconv/unoconv/master/unoconv
3237
+ # mv unoconv /usr/bin
3238
+ # chmod a+x /usr/bin/unoconv
3239
+ ```
2848
3240
 
2849
3241
  ## Configuration
2850
3242
 
2851
- Like any `ascli` commands, parameters can be passed on command line or using a configuration [option preset](#lprt). Note that if you use the `ascli` run as `xfer` user, like here, the configuration file must be created as the same user. Example using a [option preset](#lprt) named `my_preset_name` (choose any name relevant to you, e.g. the AoC node name, and replace in the following lines):
3243
+ The preview generator is run as a user, preferably a regular user (not root). When using object storage, any user can be used, but when using local storage it is usually better to use the user `xfer`, as uploaded files are under this identity: this ensures proper access rights. (we will assume this)
3244
+
3245
+ Like any `ascli` commands, parameters can be passed on command line or using a configuration [option preset](#lprt). The configuration file must be created with the same user used to run so that it is properly used on runtime.
3246
+
3247
+ Note that the `xfer` user has a special protected shell: `aspshell`, so changing identity requires specification of alternate shell:
2852
3248
 
2853
3249
  ```
2854
3250
  # su -s /bin/bash - xfer
2855
- $ ascli config id my_preset_name update --url=https://localhost:9092 --username=my_access_key --password=my_secret --skip-types=office --lock-port=12346
2856
- $ ascli config id default set preview my_preset_name
3251
+ $ ascli config id previewconf update --url=https://localhost:9092 --username=my_access_key --password=my_secret --skip-types=office --lock-port=12346
3252
+ $ ascli config id default set preview previewconf
2857
3253
  ```
2858
3254
 
2859
- Here we assume that Office file generation is disabled, else remove the option. For the `lock_port` option refer to a previous section in thsi manual.
3255
+ Here we assume that Office file generation is disabled, else remove this option.
3256
+ `lock_port` prevents concurrent execution of generation when using a scheduler.
2860
3257
 
2861
- Once can check if the access key is well configured using:
3258
+ One can check if the access key is well configured using:
2862
3259
 
2863
3260
  ```
2864
- $ ascli -Pmy_preset_name node browse /
3261
+ $ ascli -Ppreviewconf node browse /
2865
3262
  ```
2866
3263
 
2867
3264
  This shall list the contents of the storage root of the access key.
2868
3265
 
2869
3266
  ## Execution
2870
3267
 
2871
- The tool intentionally supports only a "one shot" mode in order to avoid having a hanging process or using too many resources (calling REST api too quickly during the scan or event method).
2872
- It needs to be run regularly to create or update preview files. For that use your best
3268
+ The tool intentionally supports only a "one shot" mode (no infinite loop) in order to avoid having a hanging process or using too many resources (calling REST api too quickly during the scan or event method).
3269
+ It needs to be run on a regular basis to create or update preview files. For that use your best
2873
3270
  reliable scheduler. For instance use "CRON" on Linux or Task Scheduler on Windows.
2874
3271
 
2875
- Typically, for "Access key" access, the system/transfer is `xfer`. So, in order to be consiustent have generate the appropriate access rights, the generation process
2876
- should be run as user `xfer`.
3272
+ Typically, for "Access key" access, the system/transfer is `xfer`. So, in order to be consistent have generate the appropriate access rights, the generation process should be run as user `xfer`.
2877
3273
 
2878
3274
  Lets do a one shot test, using the configuration previously created:
2879
3275
 
2880
3276
  ```
2881
3277
  # su -s /bin/bash - xfer
2882
- $ ascli preview scan --overwrite=always
3278
+ xfer$ ascli preview scan --overwrite=always
2883
3279
  ```
2884
3280
 
2885
3281
  When the preview generator is first executed it will create a file: `.aspera_access_key`
2886
- which contains the access key used.
3282
+ in the previews folder which contains the access key used.
2887
3283
  On subsequent run it reads this file and check that previews are generated for the same access key, else it fails. This is to prevent clash of different access keys using the same root.
2888
3284
 
2889
3285
  ## Configuration for Execution in scheduler
2890
3286
 
2891
- Here is an example of configuration for use with cron on Linux. Adapt the scripts to your own preference.
3287
+ Here is an example of configuration for use with cron on Linux.
3288
+ Adapt the scripts to your own preference.
2892
3289
 
2893
3290
  We assume here that a configuration preset was created as shown previously.
2894
3291
 
2895
- Here the cronjob is created for `root`, and changes the user to `xfer`, also overriding the shell which should be `aspshell`. (adapt the command below, as it would override existing crontab). It is also up to you to use directly the `xfer` user's crontab. This is an example only.
3292
+ Lets first setup a script that will be used in the sceduler and sets up the environment.
3293
+
3294
+ Example of startup script `cron_ascli`, which sets the Ruby environment and adds some timeout protection:
3295
+
3296
+ ```
3297
+ #!/bin/bash
3298
+ # set a timeout protection, just in case
3299
+ case "$*" in *trev*) tmout=10m ;; *) tmout=30m ;; esac
3300
+ . /etc/profile.d/rvm.sh
3301
+ rvm use 2.6 --quiet
3302
+ exec timeout ${tmout} ascli "${@}"
3303
+ ```
3304
+
3305
+ Here the cronjob is created for user `xfer`.
2896
3306
 
2897
3307
  ```
2898
- # crontab<<EOF
2899
- 2-59 * * * * su -s /bin/bash - xfer -c 'nice +10 timeout 10m ascli preview event --log-level=info --logger=syslog --iteration-file=/tmp/preview_restart.txt'
2900
- 0 * * * * su -s /bin/bash - xfer -c 'nice +10 timeout 30m ascli preview scan --log-level=info --logger=syslog'
3308
+ xfer$ crontab<<EOF
3309
+ 0 * * * * /home/xfer/cron_ascli preview scan --logger=syslog --display=error
3310
+ 2-59 * * * * /home/xfer/cron_ascli preview trev --logger=syslog --display=error
2901
3311
  EOF
2902
3312
  ```
2903
3313
 
2904
- Nopte that the options here may be located in the config preset, but it was left on the command line to keep stdout for command line execution of preview.
3314
+ Note that the loging options are kept in the cronfile instead of conf file to allow execution on command line with output on command line.
2905
3315
 
2906
3316
  ## Candidate detection for creation or update (or deletion)
2907
3317
 
2908
- The tool will find candidates for preview generation using three commands:
3318
+ The tool generates preview files using those commands:
2909
3319
 
2910
3320
  * `trevents` : only recently uploaded files will be tested (transfer events)
2911
3321
  * `events` : only recently uploaded files will be tested (file events: not working)
2912
- * `scan` : deeply scan all files under the access key&apos;s "storage root"
2913
- * `folder` : same as `scan`, but only on the specified folder&apos;s "file identifier"
2914
- * `file` : for an individual file generation
2915
-
2916
- Note that for the `event`, the option `iteration_file` should be specified so that
2917
- successive calls only process new events. This file will hold an identifier
2918
- telling from where to get new events.
2919
-
2920
- It is also possible to test a local file, using the `test` command.
3322
+ * `scan` : recursively scan all files under the access key&apos;s "storage root"
3323
+ * `test` : test using a local file
2921
3324
 
2922
3325
  Once candidate are selected, once candidates are selected,
2923
3326
  a preview is always generated if it does not exist already,
2924
3327
  else if a preview already exist, it will be generated
2925
- using one of three overwrite method:
3328
+ using one of three values for the `overwrite` option:
2926
3329
 
2927
3330
  * `always` : preview is always generated, even if it already exists and is newer than original
2928
3331
  * `never` : preview is generated only if it does not exist already
2929
3332
  * `mtime` : preview is generated only if the original file is newer than the existing
2930
3333
 
2931
- Deletion of preview for deleted source files: not implemented yet.
3334
+ Deletion of preview for deleted source files: not implemented yet (TODO).
2932
3335
 
2933
3336
  If the `scan` or `events` detection method is used, then the option : `skip_folders` can be used to skip some folders. It expects a list of path relative to the storage root (docroot) starting with slash, use the `@json:` notation, example:
2934
3337
 
@@ -2938,6 +3341,14 @@ $ ascli preview scan --skip-folders=@json:'["/not_here"]'
2938
3341
 
2939
3342
  The option `folder_reset_cache` forces the node service to refresh folder contents using various methods.
2940
3343
 
3344
+ When scanning the option `value` has the same behaviour as for the `node find` command.
3345
+
3346
+ For instance to filter out files beginning with `._` do:
3347
+
3348
+ ```
3349
+ ... --value='exec:!f["name"].start_with?("._") or f["name"].eql?(".DS_Store")'
3350
+ ```
3351
+
2941
3352
  ## Preview File types
2942
3353
 
2943
3354
  Two types of preview can be generated:
@@ -3075,7 +3486,7 @@ Note that in addition, many "EX_" [_transfer-spec_](#transferspec) parameters ar
3075
3486
  ## Simple session
3076
3487
 
3077
3488
  ```
3078
- MY_TSPEC='{"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"demoaspera","direction":"receive","destination_root":"./test.dir","paths":[{"source":"/aspera-test-dir-tiny/200KB.1"}],"resume_level":"none"}'
3489
+ MY_TSPEC='{"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"_demo_pass_","direction":"receive","destination_root":"./test.dir","paths":[{"source":"/aspera-test-dir-tiny/200KB.1"}],"resume_level":"none"}'
3079
3490
 
3080
3491
  echo "${MY_TSPEC}"|asession
3081
3492
  ```
@@ -3088,7 +3499,7 @@ This is particularly useful for a persistent session ( with the [_transfer-spec_
3088
3499
 
3089
3500
  ```
3090
3501
  $ asession
3091
- {"remote_host":"demo.asperasoft.com","ssh_port":33001,"remote_user":"asperaweb","remote_password":"demoaspera","direction":"receive","destination_root":".","keepalive":true,"resume_level":"none"}
3502
+ {"remote_host":"demo.asperasoft.com","ssh_port":33001,"remote_user":"asperaweb","remote_password":"_demo_pass_","direction":"receive","destination_root":".","keepalive":true,"resume_level":"none"}
3092
3503
  {"type":"START","source":"/aspera-test-dir-tiny/200KB.2"}
3093
3504
  {"type":"DONE"}
3094
3505
  ```
@@ -3182,6 +3593,34 @@ $ ascli server upload source_hot --to-folder=/Upload/target_hot --lock-port=1234
3182
3593
 
3183
3594
  The local (here, relative path: source_hot) is sent (upload) to basic fasp server, source files are deleted after transfer. growing files will be sent only once they dont grow anymore (based ona 8 second cooloff period). If a transfer takes more than the execution period, then the subsequent execution is skipped (lock-port).
3184
3595
 
3596
+ # Aspera Health check and Nagios
3597
+
3598
+ Each plugin provide a `health` command that will check the health status of the application. Example:
3599
+
3600
+ ```
3601
+ $ ascli console health
3602
+ +--------+-------------+------------+
3603
+ | status | component | message |
3604
+ +--------+-------------+------------+
3605
+ | ok | console api | accessible |
3606
+ +--------+-------------+------------+
3607
+ ```
3608
+
3609
+ Typically, the health check uses the REST API of the application with the following exception: the `server` plugin allows checking health by:
3610
+
3611
+ * issuing a transfer to the server
3612
+ * checking web app status with `asctl all:status`
3613
+ * checking daemons process status
3614
+
3615
+ `ascli` can be called by Nagios to check the health status of an Aspera server. The output can be made compatible to Nagios with option `--format=nagios` :
3616
+
3617
+ ```
3618
+ $ ascli server health transfer --to-folder=/Upload --format=nagios --progress=none
3619
+ OK - [transfer:ok]
3620
+ $ ascli server health asctlstatus --cmd_prefix='sudo ' --format=nagios
3621
+ OK - [NP:running, MySQL:running, Mongrels:running, Background:running, DS:running, DB:running, Email:running, Apache:running]
3622
+ ```
3623
+
3185
3624
  # Module: `Aspera`
3186
3625
 
3187
3626
  Main components:
@@ -3201,6 +3640,16 @@ This sample code shows some example of use of the API as well as
3201
3640
  REST API.
3202
3641
  Note: although nice, it's probably a good idea to use RestClient for REST.
3203
3642
 
3643
+ Example of use of the API of Aspera on Cloud:
3644
+
3645
+ ```
3646
+ require 'aspera/aoc'
3647
+
3648
+ aoc=Aspera::AoC.new(url: 'https://sedemo.ibmaspera.com',auth: :jwt, scope: 'user:all', private_key: File.read(File.expand_path('~/.aspera/ascli/aspera_on_cloud_key')),username: 'laurent.martin.aspera@fr.ibm.com',subpath: 'api/v1')
3649
+
3650
+ aoc.read('self')
3651
+ ```
3652
+
3204
3653
  # History
3205
3654
 
3206
3655
  When I joined Aspera, there was only one CLI: `ascp`, which is the implementation of the FASP protocol, but there was no CLI to access the various existing products (Server, Faspex, Shares). Once, Serban (founder) provided a shell script able to create a Faspex Package using Faspex REST API. Since all products relate to file transfers using FASP (ascp), I thought it would be interesting to have a unified CLI for transfers using FASP. Also, because there was already the `ascp` tool, I thought of an extended tool : `eascp.pl` which was accepting all `ascp` options for transfer but was also able to transfer to Faspex and Shares (destination was a kind of URI for the applications).
@@ -3217,11 +3666,43 @@ So, it evolved into `ascli`:
3217
3666
  * supports transfers with multiple [Transfer Agents](#agents), that&apos;s why transfer parameters moved from ascp command line to [_transfer-spec_](#transferspec) (more reliable , more standard)
3218
3667
  * `ruby` is consistent with other Aspera products
3219
3668
 
3669
+ # Changes (Release notes)
3220
3670
 
3671
+ * 4.2.1
3221
3672
 
3222
- # Release Notes
3673
+ * new: command `faspex package recv` supports link of type: `faspe:`
3674
+ * new: command `faspex package recv` supports option `recipient` to specify dropbox with leading `*`
3223
3675
 
3224
- * 4.0.0.pre2
3676
+ * 4.2.0
3677
+
3678
+ * new: command `aoc remind` to receive organization membership by email
3679
+ * new: in `preview` option `value` to filter out on file name
3680
+ * new: `initdemo` to initialize for demo server
3681
+ * new: `direct` transfer agent options: `spawn_timeout_sec` and `spawn_delay_sec`
3682
+ * fix: on Windows `conf ascp use` expects ascp.exe
3683
+ * fix: (break) multi_session_threshold is Integer, not String
3684
+ * fix: `conf ascp install` renames sdk folder if it already exists (leftover shared lib may make fail)
3685
+ * fix: removed replace_illegal_chars from default aspera.conf causing "Error creating illegal char conversion table"
3686
+ * change: (break) `aoc apiinfo` is removed, use `aoc servers` to provide the list of cloud systems
3687
+ * change: (break) parameters for resume in `transfer-info` for `direct` are now in sub-key `"resume"`
3688
+
3689
+ * 4.1.0
3690
+
3691
+ * fix: remove keys from transfer spec and command line when not needed
3692
+ * fix: default to create_dir:true so that sending single file to a folder does not rename file if folder does not exist
3693
+ * new: update documentation with regard to offline and docker installation
3694
+ * new: renamed command `nagios_check` to `health`
3695
+ * new: agent `http_gw` now supports upload
3696
+ * new: added option `sdk_url` to install SDK from local file for offline install
3697
+ * new: check new gem version periodically
3698
+ * new: the --fields= option, support -_fieldname_ to remove a field from default fields
3699
+ * new: Oauth tokens are discarded automatically after 30 minutes (useful for COS delegated refresh tokens)
3700
+ * new: mimemagic is now optional, needs manual install for `preview`, compatible with version 0.4.x
3701
+ * new: AoC a password can be provided for a public link
3702
+ * new: `conf doc` take an optional parameter to go to a section
3703
+ * new: initial support for Faspex 5 Beta 1
3704
+
3705
+ * 4.0.0
3225
3706
 
3226
3707
  * now available as open source at [https://github.com/IBM/aspera-cli](https://github.com/IBM/aspera-cli) with general cleanup
3227
3708
  * changed default tool name from `mlia` to `ascli`
@@ -3349,7 +3830,7 @@ So, it evolved into `ascli`:
3349
3830
 
3350
3831
  * 0.10.6
3351
3832
 
3352
- * FaspManager: transfer spec `authentication` no more needed for local tranfer to use aspera public keys. public keys will be used if there is a token and no key or password is provided.
3833
+ * FaspManager: transfer spec `authentication` no more needed for local tranfer to use Aspera public keys. public keys will be used if there is a token and no key or password is provided.
3353
3834
  * gem version requirements made more open
3354
3835
 
3355
3836
  * 0.10.5
@@ -3576,11 +4057,15 @@ Breaking change:
3576
4057
 
3577
4058
  * Breaking change: "files" application renamed to "aspera" (for "Aspera on Cloud"). "repository" renamed to "files". Default is automatically reset, e.g. in config files and change key "files" to "aspera" in [option preset](#lprt) "default".
3578
4059
 
3579
- # BUGS
4060
+ # BUGS, FEATURES, CONTRIBUTION
3580
4061
 
3581
- * This is best effort code without official support, dont expect full capabilities. This code is not supported by IBM/Aspera. You can contact the author for bugs or features.
4062
+ For issues or feature requests use the Github repository and issues.
3582
4063
 
3583
- ## only one value for any option
4064
+ You can also contribute to this open source project.
4065
+
4066
+ One can also create one's own command nplugin.
4067
+
4068
+ ## Only one value for any option
3584
4069
 
3585
4070
  Some commands and sub commands may ask for the same option name.
3586
4071
  Currently, since option definition is position independant (last one wins), it is not possible
@@ -3594,7 +4079,8 @@ This happens typically for the `node` sub command, e.g. identify the node by nam
3594
4079
 
3595
4080
  ## ED255519 key not supported
3596
4081
 
3597
- ED255519 keys are deactivated since version 0.9.24 so this type of key will just be ignored.
4082
+ ED25519 keys are deactivated since version 0.9.24 so this type of key will just be ignored.
4083
+
3598
4084
  Without this deactivation, if such key was present the following error was generated:
3599
4085
 
3600
4086
  ```
@@ -3604,7 +4090,17 @@ OpenSSH keys only supported if ED25519 is available
3604
4090
  Which meant that you do not have ruby support for ED25519 SSH keys.
3605
4091
  You may either install the suggested Gems, or remove your ed25519 key from your `.ssh` folder to solve the issue.
3606
4092
 
3607
- # TODO
4093
+ ## Error "Remote host is not who we expected"
4094
+
4095
+ `ascp` version 4.x changed the algorithm used to check the SSH server certificate. To ignore the certificate (SSH fingerprint) add option on client side:
4096
+
4097
+ ```
4098
+ --ts=@json:'{"sshfp":null}'
4099
+ ```
4100
+
4101
+ Refer to 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): if you have access to server side, basically disable other SSH host keys than RSA.
4102
+
4103
+ ## Miscelaneous
3608
4104
 
3609
4105
  * remove rest and oauth classes and use ruby standard gems:
3610
4106
 
@@ -3620,9 +4116,3 @@ You may either install the suggested Gems, or remove your ed25519 key from your
3620
4116
  * Going through proxy: use env var http_proxy and https_proxy, no_proxy
3621
4117
 
3622
4118
  * easier use with https://github.com/pmq20/ruby-packer
3623
-
3624
- # Contribution
3625
-
3626
- Send comments !
3627
-
3628
- Create your own plugin !