aspera-cli 4.13.0 → 4.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +28 -5
- data/CONTRIBUTING.md +17 -1
- data/README.md +782 -401
- data/examples/dascli +1 -1
- data/examples/rubyc +24 -0
- data/lib/aspera/aoc.rb +21 -32
- data/lib/aspera/ascmd.rb +1 -0
- data/lib/aspera/cli/basic_auth_plugin.rb +6 -6
- data/lib/aspera/cli/formatter.rb +17 -25
- data/lib/aspera/cli/main.rb +21 -27
- data/lib/aspera/cli/manager.rb +128 -114
- data/lib/aspera/cli/plugin.rb +87 -38
- data/lib/aspera/cli/plugins/alee.rb +2 -2
- data/lib/aspera/cli/plugins/aoc.rb +216 -102
- data/lib/aspera/cli/plugins/ats.rb +16 -18
- data/lib/aspera/cli/plugins/bss.rb +3 -3
- data/lib/aspera/cli/plugins/config.rb +177 -367
- data/lib/aspera/cli/plugins/console.rb +4 -6
- data/lib/aspera/cli/plugins/cos.rb +12 -13
- data/lib/aspera/cli/plugins/faspex.rb +17 -18
- data/lib/aspera/cli/plugins/faspex5.rb +332 -216
- data/lib/aspera/cli/plugins/node.rb +171 -142
- data/lib/aspera/cli/plugins/orchestrator.rb +15 -18
- data/lib/aspera/cli/plugins/preview.rb +38 -60
- data/lib/aspera/cli/plugins/server.rb +22 -15
- data/lib/aspera/cli/plugins/shares.rb +24 -33
- data/lib/aspera/cli/plugins/sync.rb +3 -3
- data/lib/aspera/cli/transfer_agent.rb +29 -26
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/colors.rb +9 -7
- data/lib/aspera/data/6 +0 -0
- data/lib/aspera/environment.rb +7 -3
- data/lib/aspera/fasp/agent_connect.rb +5 -0
- data/lib/aspera/fasp/agent_direct.rb +5 -5
- data/lib/aspera/fasp/agent_httpgw.rb +138 -60
- data/lib/aspera/fasp/agent_trsdk.rb +2 -0
- data/lib/aspera/fasp/error_info.rb +2 -0
- data/lib/aspera/fasp/installation.rb +18 -19
- data/lib/aspera/fasp/parameters.rb +18 -17
- data/lib/aspera/fasp/parameters.yaml +2 -1
- data/lib/aspera/fasp/resume_policy.rb +3 -3
- data/lib/aspera/fasp/transfer_spec.rb +6 -5
- data/lib/aspera/fasp/uri.rb +23 -21
- data/lib/aspera/faspex_postproc.rb +1 -1
- data/lib/aspera/hash_ext.rb +12 -2
- data/lib/aspera/keychain/macos_security.rb +13 -13
- data/lib/aspera/log.rb +1 -0
- data/lib/aspera/node.rb +62 -80
- data/lib/aspera/oauth.rb +1 -1
- data/lib/aspera/persistency_action_once.rb +1 -1
- data/lib/aspera/preview/terminal.rb +61 -15
- data/lib/aspera/preview/utils.rb +3 -3
- data/lib/aspera/proxy_auto_config.js +2 -2
- data/lib/aspera/rest.rb +37 -0
- data/lib/aspera/secret_hider.rb +6 -1
- data/lib/aspera/ssh.rb +1 -1
- data/lib/aspera/sync.rb +2 -0
- data.tar.gz.sig +0 -0
- metadata +3 -4
- metadata.gz.sig +0 -0
- data/docs/test_env.conf +0 -186
- data/lib/aspera/data/7 +0 -0
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# Command Line Interface for IBM Aspera products
|
2
2
|
<!-- markdownlint-disable MD033 MD003 MD053 -->
|
3
|
-
<!--
|
3
|
+
<!-- cspell:ignore devkit zcvf zxvf noded secondfile filesize sedemo eudemo webmail csum eascp loglevel cronfile magick keepalive inotify eastus bluemix trev sshfp struct genkey passout ibmaspera unpermitted schtasks taskschd dascli -->
|
4
4
|
|
5
5
|
[comment1]: # (Do not edit this README.md, edit docs/README.erb.md, for details, read docs/README.md)
|
6
6
|
|
7
7
|
##
|
8
8
|
|
9
|
-
Version : 4.
|
9
|
+
Version : 4.14.0
|
10
10
|
|
11
11
|
Laurent/2016-2023
|
12
12
|
|
@@ -92,7 +92,7 @@ ascli --version
|
|
92
92
|
```
|
93
93
|
|
94
94
|
```bash
|
95
|
-
4.
|
95
|
+
4.14.0
|
96
96
|
```
|
97
97
|
|
98
98
|
### First use
|
@@ -196,9 +196,9 @@ The following sections provide information on the various installation methods.
|
|
196
196
|
|
197
197
|
An internet connection is required for the installation. If you don't have internet for the installation, refer to section [Installation without internet access](#offline_install).
|
198
198
|
|
199
|
-
###
|
199
|
+
### Container
|
200
200
|
|
201
|
-
The image is: [martinlaurent/ascli](https://hub.docker.com/r/martinlaurent/ascli).
|
201
|
+
The container image is: [martinlaurent/ascli](https://hub.docker.com/r/martinlaurent/ascli).
|
202
202
|
The container contains: Ruby, `ascli` and the Aspera Transfer SDK.
|
203
203
|
To use the container, ensure that you have `podman` (or `docker`) installed.
|
204
204
|
|
@@ -206,7 +206,7 @@ To use the container, ensure that you have `podman` (or `docker`) installed.
|
|
206
206
|
podman --version
|
207
207
|
```
|
208
208
|
|
209
|
-
#### Container quick start
|
209
|
+
#### Container: quick start
|
210
210
|
|
211
211
|
**Wanna start quickly ?** With an interactive shell ? Execute this:
|
212
212
|
|
@@ -229,13 +229,13 @@ That is simple, but there are limitations:
|
|
229
229
|
- Any generated file in the container will be lost on container (shell) exit. Including configuration files and downloaded files.
|
230
230
|
- No possibility to upload files located on the host system
|
231
231
|
|
232
|
-
#### Details
|
232
|
+
#### Container: Details
|
233
233
|
|
234
|
-
The container image is built from this [Dockerfile](Dockerfile): the entry point is `ascli` and the default command is `help`.
|
234
|
+
The container image is built from this [Dockerfile](Dockerfile.tmpl.erb): the entry point is `ascli` and the default command is `help`.
|
235
235
|
|
236
|
-
If you want to run the image with a shell, execute with option: `--entrypoint bash`, and give argument `-l` (bash login to override the `help` default argument)
|
236
|
+
If you want to run the image with a shell, execute with option: `--entrypoint bash`, and give argument `-l` (`bash` login option to override the `help` default argument)
|
237
237
|
|
238
|
-
The container can also be
|
238
|
+
The container can also be executed for individual commands like this: (add `ascli` commands and options at the end of the command line, e.g. `-v` to display the version)
|
239
239
|
|
240
240
|
```bash
|
241
241
|
podman run --rm --tty --interactive martinlaurent/ascli:latest
|
@@ -254,11 +254,11 @@ ascli -v
|
|
254
254
|
```
|
255
255
|
|
256
256
|
```text
|
257
|
-
4.
|
257
|
+
4.14.0
|
258
258
|
```
|
259
259
|
|
260
260
|
In order to keep persistency of configuration on the host,
|
261
|
-
you should
|
261
|
+
you should specify your user's config folder as a volume for the container.
|
262
262
|
To enable write access, a possibility is to run as `root` in the container (and set the default configuration folder to `/home/cliuser/.aspera/ascli`).
|
263
263
|
Add options:
|
264
264
|
|
@@ -275,8 +275,8 @@ you can change the entry point, add option:
|
|
275
275
|
--entrypoint bash
|
276
276
|
```
|
277
277
|
|
278
|
-
You may also probably want that files downloaded in the container are
|
279
|
-
In this case you need also to
|
278
|
+
You may also probably want that files downloaded in the container are directed to the host.
|
279
|
+
In this case you need also to specify the shared transfer folder as a volume:
|
280
280
|
|
281
281
|
```bash
|
282
282
|
--volume $HOME/xferdir:/xferfiles
|
@@ -298,7 +298,7 @@ mkdir -p $HOME/.aspera/ascli
|
|
298
298
|
asclish
|
299
299
|
```
|
300
300
|
|
301
|
-
#### Sample
|
301
|
+
#### Container: Sample start script
|
302
302
|
|
303
303
|
A convenience sample script is also provided: download the script [`dascli`](../examples/dascli) from [the GIT repo](https://raw.githubusercontent.com/IBM/aspera-cli/main/examples/dascli) :
|
304
304
|
|
@@ -308,7 +308,7 @@ Some environment variables can be set for this script to adapt its behavior:
|
|
308
308
|
|
309
309
|
| env var | description | default | example |
|
310
310
|
|--------------|------------------------------------|--------------------------|--------------------------|
|
311
|
-
| ASCLI_HOME | configuration folder (persistency) | `$HOME/.aspera/ascli` | `$HOME/.
|
311
|
+
| ASCLI_HOME | configuration folder (persistency) | `$HOME/.aspera/ascli` | `$HOME/.ascli_config` |
|
312
312
|
| docker_args | additional options to `podman` | <empty> | `--volume /Users:/Users` |
|
313
313
|
| image | container image name | martinlaurent/ascli | |
|
314
314
|
| version | container image version | latest | `4.8.0.pre` |
|
@@ -339,7 +339,7 @@ echo 'Local file to transfer' > $xferdir/samplefile.txt
|
|
339
339
|
>
|
340
340
|
> **Note:** Do not use too many volumes, as the AUFS limits the number.
|
341
341
|
|
342
|
-
#### Offline installation
|
342
|
+
#### Container: Offline installation
|
343
343
|
|
344
344
|
- First create the image archive:
|
345
345
|
|
@@ -354,6 +354,50 @@ podman save martinlaurent/ascli|gzip>ascli_image_latest.tar.gz
|
|
354
354
|
podman load -i ascli_image_latest.tar.gz
|
355
355
|
```
|
356
356
|
|
357
|
+
#### Container: `aspera.conf`
|
358
|
+
|
359
|
+
`ascp`'s configuration file `aspera.conf` is located in the container at: `/aspera_sdk/aspera.conf` (see Dockerfile).
|
360
|
+
As the container is immutable, it is not recommended to modify this file.
|
361
|
+
If one wants to change the content, it is possible to tell `ascp` to use another file using `ascp` option `-f`, e.g. by locating it on the host folder `$HOME/.aspera/ascli` mapped to the container folder `/home/cliuser/.aspera/ascli`:
|
362
|
+
|
363
|
+
```bash
|
364
|
+
echo '<CONF/>' > $HOME/.aspera/ascli/aspera.conf
|
365
|
+
```
|
366
|
+
|
367
|
+
Then, tell `ascp` to use that other conf file:
|
368
|
+
|
369
|
+
```bash
|
370
|
+
--transfer-info=@json:'{"ascp_args":["-f","/home/cliuser/.aspera/ascli/aspera.conf"]}'
|
371
|
+
```
|
372
|
+
|
373
|
+
#### Container: Singularity
|
374
|
+
|
375
|
+
Singularity is another type of use of container.
|
376
|
+
|
377
|
+
On Linux install:
|
378
|
+
|
379
|
+
```console
|
380
|
+
dnf install singularity-ce
|
381
|
+
```
|
382
|
+
|
383
|
+
Build an image like this:
|
384
|
+
|
385
|
+
```bash
|
386
|
+
singularity build ascli.sif docker://martinlaurent/ascli
|
387
|
+
```
|
388
|
+
|
389
|
+
The use like this:
|
390
|
+
|
391
|
+
```bash
|
392
|
+
singularity run ascli.sif
|
393
|
+
```
|
394
|
+
|
395
|
+
Or get a shell with access to the tool like this:
|
396
|
+
|
397
|
+
```bash
|
398
|
+
singularity shell ascli.sif
|
399
|
+
```
|
400
|
+
|
357
401
|
### <a id="ruby"></a>Ruby
|
358
402
|
|
359
403
|
Use this method to install on the native host.
|
@@ -459,25 +503,36 @@ brew install ruby
|
|
459
503
|
|
460
504
|
#### Linux: package
|
461
505
|
|
462
|
-
If your Linux distribution provides a standard Ruby package, you can use it provided that the version
|
506
|
+
If your Linux distribution provides a standard Ruby package, you can use it provided that the version supported.
|
463
507
|
|
464
|
-
Example
|
508
|
+
**Example:** RHEL 8+, Rocky Linux 8+, Centos 8 Stream: with extensions to compile native gems
|
465
509
|
|
466
|
-
|
467
|
-
yum module install ruby:3.1
|
468
|
-
```
|
510
|
+
- Check available ruby versions:
|
469
511
|
|
470
|
-
|
512
|
+
```bash
|
513
|
+
dnf module list ruby
|
514
|
+
```
|
471
515
|
|
472
|
-
|
473
|
-
yum install make automake gcc gcc-c++ kernel-devel
|
474
|
-
yum install redhat-rpm-config
|
475
|
-
dnf module reset ruby
|
476
|
-
dnf module enable ruby:3.1
|
477
|
-
dnf module -y install ruby:3.1/common
|
478
|
-
```
|
516
|
+
- If ruby was already installed with an older version, remove it:
|
479
517
|
|
480
|
-
|
518
|
+
```bash
|
519
|
+
dnf module -y reset ruby
|
520
|
+
```
|
521
|
+
|
522
|
+
- Install packages needed to build native gems:
|
523
|
+
|
524
|
+
```bash
|
525
|
+
dnf install -y make automake gcc gcc-c++ kernel-devel
|
526
|
+
```
|
527
|
+
|
528
|
+
- Enable the Ruby version you want:
|
529
|
+
|
530
|
+
```bash
|
531
|
+
dnf module -y enable ruby:3.1
|
532
|
+
dnf install -y ruby-devel
|
533
|
+
```
|
534
|
+
|
535
|
+
**Other examples:**
|
481
536
|
|
482
537
|
```bash
|
483
538
|
yum install -y ruby ruby-devel rubygems ruby-json
|
@@ -543,9 +598,10 @@ To upgrade to the latest version:
|
|
543
598
|
gem update aspera-cli
|
544
599
|
```
|
545
600
|
|
546
|
-
`ascli` checks every week if a new version is available and notify the user in a WARN log.
|
601
|
+
`ascli` checks every week if a new version is available and notify the user in a WARN log.
|
602
|
+
To de-activate this feature, globally set the option `version_check_days` to `0`, or specify a different period in days.
|
547
603
|
|
548
|
-
To check
|
604
|
+
To check if a new version is available (independently of `version_check_days`):
|
549
605
|
|
550
606
|
```bash
|
551
607
|
ascli conf check_update
|
@@ -696,21 +752,66 @@ Moreover all `ascp` options are supported either through transfer spec parameter
|
|
696
752
|
|
697
753
|
#### Shell parsing for Unix-like systems: Linux, macOS, AIX
|
698
754
|
|
755
|
+
Linux command line parsing is easy: It is fully documented in the shell's documentation.
|
756
|
+
|
699
757
|
On Unix-like environments, this is typically a POSIX shell (bash, zsh, ksh, sh).
|
700
758
|
In this environment the shell parses the command line, possibly replacing variables, etc...
|
701
|
-
|
702
|
-
|
759
|
+
See [bash shell operation](https://www.gnu.org/software/bash/manual/bash.html#Shell-Operation).
|
760
|
+
The shell builds the list of arguments and then `fork`/`exec` Ruby with that list.
|
703
761
|
Ruby receives a list parameters from shell and gives it to `ascli`.
|
704
|
-
So special character handling (quotes, spaces, env vars, ...) is
|
762
|
+
So special character handling (quotes, spaces, env vars, ...) is handled by the shell for any command executed.
|
705
763
|
|
706
764
|
#### Shell parsing for Windows
|
707
765
|
|
708
|
-
|
709
|
-
|
710
|
-
|
766
|
+
MS Windows command line parsing is not easy: It is not hasndled by the shell (`cmd.exe`), not handled by the operating system, but it is handled by the application (here Ruby).
|
767
|
+
|
768
|
+
As far as `ascli` is concerned: it is close to a Linux shell parsing.
|
769
|
+
|
770
|
+
Thanksfully, `ascli` provides a command to check the value of an argument after parsing: `config echo`.
|
771
|
+
One can also run `ascli` with option `--log-level=debug` to display the command line after parsing.
|
772
|
+
|
773
|
+
The following examples give the same result on Windows:
|
774
|
+
|
775
|
+
- single quote protects the double quote
|
776
|
+
|
777
|
+
```cmd
|
778
|
+
conf echo @json:'{"url":"https://..."}'
|
779
|
+
```
|
780
|
+
|
781
|
+
- triple double quotes are replaced with a single double quote
|
782
|
+
|
783
|
+
```cmd
|
784
|
+
conf echo @json:{"""url""":"""https://..."""}
|
785
|
+
```
|
786
|
+
|
787
|
+
- double quote is escaped with backslash within double quotes
|
788
|
+
|
789
|
+
```cmd
|
790
|
+
conf echo @json:"{\"url\":\"https://...\"}"
|
791
|
+
```
|
792
|
+
|
793
|
+
On Windows, `cmd.exe` is typically used to start .
|
794
|
+
`cmd.exe` handles some special characters: `^"<>|%&`.
|
795
|
+
Basically it handles I/O redirections (`<>|`), shell variables (`%`), multiple commands (`&`) and handles those special characters from the command line.
|
796
|
+
Eventually, all those special characters are removed from the command line unless escaped with `^` or `"`.
|
797
|
+
`"` are kept and given to the program.
|
798
|
+
|
799
|
+
Then, Windows `CreateProcess` is called with just the whole command line as a single string, unlike Unix-like systems where the command line is split into arguments by the shell.
|
800
|
+
|
801
|
+
It's up to the program to split arguments:
|
711
802
|
|
712
803
|
- [Windows: How Command Line Parameters Are Parsed](https://daviddeley.com/autohotkey/parameters/parameters.htm#RUBY)
|
713
|
-
- [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/)
|
804
|
+
- [Understand Quoting and Escaping of Windows Command Line Arguments](https://web.archive.org/web/20190316094059/http://www.windowsinspired.com/understanding-the-command-line-string-and-arguments-received-by-a-windows-program/)
|
805
|
+
|
806
|
+
is a Ruby program, so Ruby parses the command line into arguments and provides them to the program.
|
807
|
+
Ruby vaguely follows the Microsoft C/C++ parameter parsing rules.
|
808
|
+
(See `w32_cmdvector` in Ruby source [`win32.c`](https://github.com/ruby/ruby/blob/master/win32/win32.c#L1766)) : <!--cspell:disable-line-->
|
809
|
+
|
810
|
+
- space characters: split arguments (space, tab, newline)
|
811
|
+
- backslash: `\` escape single special character
|
812
|
+
- globbing characters: `*?[]{}` for file globbing
|
813
|
+
- double quotes: `"`
|
814
|
+
- single quotes: `'`
|
714
815
|
|
715
816
|
#### Extended Values (JSON, Ruby, ...)
|
716
817
|
|
@@ -727,12 +828,12 @@ Example: The shell parses three arguments (as strings: `1`, `2` and `3`), so the
|
|
727
828
|
ascli conf echo 1 2 3
|
728
829
|
```
|
729
830
|
|
730
|
-
```
|
831
|
+
```ruby
|
731
832
|
"1"
|
732
833
|
ERROR: Argument: unprocessed values: ["2", "3"]
|
733
834
|
```
|
734
835
|
|
735
|
-
`config echo` displays the value of the first argument using Ruby syntax: it surrounds a string with `"` and add `\` before special characters.
|
836
|
+
`config echo` displays the value of the **first** argument using Ruby syntax: it surrounds a string with `"` and add `\` before special characters.
|
736
837
|
|
737
838
|
> **Note:** It gets its value after shell command line parsing and `ascli` extended value parsing.
|
738
839
|
|
@@ -743,7 +844,7 @@ Depending on the case, a different `format` is used to display the actual value.
|
|
743
844
|
For example, in the simple string `Hello World`, the space character is special for the shell, so it must be escaped so that a single value is represented.
|
744
845
|
|
745
846
|
Double quotes are processed by the shell to create a single string argument.
|
746
|
-
For POSIX shells
|
847
|
+
For **POSIX shells**, single quotes can also be used in this case, or protect the special character ` ` (space) with a backslash. <!-- markdownlint-disable-line -->
|
747
848
|
|
748
849
|
```bash
|
749
850
|
ascli conf echo "Hello World" --format=text
|
@@ -760,7 +861,7 @@ Hello World
|
|
760
861
|
To be evaluated by shell, the shell variable must not be in single quotes.
|
761
862
|
Even if the variable contains spaces it makes only one argument to `ascli` because word parsing is made before variable expansion by shell.
|
762
863
|
|
763
|
-
> **Note:** we use a
|
864
|
+
> **Note:** we use a shell variable here: the variable is not necessarily an environment variable (`export`).
|
764
865
|
|
765
866
|
```bash
|
766
867
|
MYVAR="Hello World"
|
@@ -843,6 +944,22 @@ ascli conf echo @ruby:"{'title'=>gets.chomp}" --format=json
|
|
843
944
|
|
844
945
|
`gets` is Ruby's method of terminal input (terminated by `\n`), and `chomp` removes the trailing `\n`.
|
845
946
|
|
947
|
+
#### Command line arguments from a file
|
948
|
+
|
949
|
+
If you need to provide a list of command line argument from lines that are in a file, on Linux you can use the `xargs` command:
|
950
|
+
|
951
|
+
```bash
|
952
|
+
xargs -a lines.txt -d \\n ascli conf echo
|
953
|
+
```
|
954
|
+
|
955
|
+
This is equivalent to execution of:
|
956
|
+
|
957
|
+
```bash
|
958
|
+
ascli conf echo [line1] [line2] [line3] ...
|
959
|
+
```
|
960
|
+
|
961
|
+
If there are spaces in the lines, those are not taken as separator, as we provide option `-d \\n` to `xargs`.
|
962
|
+
|
846
963
|
#### Extended value using special characters read from environmental variables or files
|
847
964
|
|
848
965
|
Using a text editor or shell: create a file `title.txt` (and env var) that contains exactly the text required: `Test " ' & \` :
|
@@ -876,25 +993,50 @@ ascli conf echo @ruby:"{'title'=>ENV['MYTITLE']}" --format=json
|
|
876
993
|
{"title":"Test \" ' & \\"}
|
877
994
|
```
|
878
995
|
|
879
|
-
###
|
996
|
+
### Commands, Options, Positional Values
|
880
997
|
|
881
|
-
|
998
|
+
Command line arguments are the units of command line, as parsed by the shell, typically separated by spaces (and called "argv").
|
882
999
|
|
883
|
-
|
1000
|
+
`ascli` considers three types of command line arguments:
|
1001
|
+
|
1002
|
+
- Commands
|
1003
|
+
- Options
|
1004
|
+
- Positional Values
|
884
1005
|
|
885
1006
|
```bash
|
886
1007
|
ascli command subcommand --option-name=VAL1 VAL2
|
887
1008
|
```
|
888
1009
|
|
889
1010
|
- executes *command*: `command subcommand`
|
890
|
-
- with one *option*: `option_name`
|
891
|
-
-
|
892
|
-
- the command has one additional *argument*: `VAL2`
|
1011
|
+
- with one *option*: `option_name`and its *value*: `VAL1`
|
1012
|
+
- the command has one additional mandatory *argument*: `VAL2`
|
893
1013
|
|
894
|
-
When the value of a command, option or argument is constrained by a fixed list of values
|
1014
|
+
When the value of a command, option or argument is constrained by a fixed list of values.
|
1015
|
+
It is possible to use the first letters of the value only, provided that it uniquely identifies a value.
|
1016
|
+
For example `ascli conf ov` is the same as `ascli config overview`.
|
895
1017
|
|
896
1018
|
The value of options and arguments is evaluated with the [Extended Value Syntax](#extended).
|
897
1019
|
|
1020
|
+
#### Commands
|
1021
|
+
|
1022
|
+
Commands are typically entity types or verbs to act on those entities.
|
1023
|
+
|
1024
|
+
Example:
|
1025
|
+
|
1026
|
+
```bash
|
1027
|
+
ascli conf ascp info
|
1028
|
+
```
|
1029
|
+
|
1030
|
+
- `ascli` is the executable executed by the shell
|
1031
|
+
- `conf` is the first level command, and is also the name f the plugin to be used
|
1032
|
+
- `ascp` is the second level command, and is also the name of the component (singleton)
|
1033
|
+
- `info` is the third level command, and is also the action to be performed
|
1034
|
+
|
1035
|
+
Typically, commands are located at the beginning of the command line.
|
1036
|
+
Order is significant.
|
1037
|
+
The provided command must match one of the supported commands in the given context.
|
1038
|
+
If a wrong , or no command is provided when expected, an error message is displayed and the list of supported commands is displayed.
|
1039
|
+
|
898
1040
|
#### Options
|
899
1041
|
|
900
1042
|
All options, e.g. `--log-level=debug`, are command line arguments that:
|
@@ -902,7 +1044,7 @@ All options, e.g. `--log-level=debug`, are command line arguments that:
|
|
902
1044
|
- start with `--`
|
903
1045
|
- have a name, in lowercase, using `-` as word separator in name (e.g. `--log-level=debug`)
|
904
1046
|
- have a value, separated from name with a `=`
|
905
|
-
- can be used by prefix, provided that it is unique. E.g. `--log-l=debug` is the same as `--log-level=debug`
|
1047
|
+
- can be used by prefix, provided that it is unique. E.g. `--log-l=debug` is the same as `--log-level=debug` (avoid)
|
906
1048
|
|
907
1049
|
Exceptions:
|
908
1050
|
|
@@ -910,17 +1052,24 @@ Exceptions:
|
|
910
1052
|
- some options (flags) don't take a value, e.g. `-r`
|
911
1053
|
- the special option `--` stops option processing and is ignored, following command line arguments are taken as arguments, including the ones starting with a `-`. Example:
|
912
1054
|
|
913
|
-
```bash
|
914
|
-
ascli config echo -- --sample
|
915
|
-
```
|
1055
|
+
```bash
|
1056
|
+
ascli config echo -- --sample
|
1057
|
+
```
|
916
1058
|
|
917
|
-
```bash
|
918
|
-
"--sample"
|
919
|
-
```
|
1059
|
+
```bash
|
1060
|
+
"--sample"
|
1061
|
+
```
|
920
1062
|
|
921
1063
|
> **Note:** Here, `--sample` is taken as an argument, and not as an option, due to `--`.
|
922
1064
|
|
923
|
-
Options
|
1065
|
+
Options may have an (hardcoded) default value.
|
1066
|
+
|
1067
|
+
Options can be placed anywhere on command line and evaluated in order.
|
1068
|
+
|
1069
|
+
Options are typically either:
|
1070
|
+
|
1071
|
+
- optional : typically to change the default behavior
|
1072
|
+
- mandatory : typically, connection information are options that are mandatory (so they can be placed in a config file)
|
924
1073
|
|
925
1074
|
The value for *any* options can come from the following locations (in this order, last value evaluated overrides previous value):
|
926
1075
|
|
@@ -932,9 +1081,16 @@ Environment variable starting with prefix: ASCLI_ are taken as option values, e.
|
|
932
1081
|
|
933
1082
|
Options values can be displayed for a given command by providing the `--show-config` option: `ascli node --show-config`
|
934
1083
|
|
935
|
-
####
|
1084
|
+
#### Positional Values
|
936
1085
|
|
937
|
-
|
1086
|
+
Positional Values are typically mandatory values for a command, such as entity creation data.
|
1087
|
+
|
1088
|
+
If a Positional Values begins with `-`, then either use the `@val:` syntax (see [Extended Values](#extended)), or use the `--` separator (see above).
|
1089
|
+
|
1090
|
+
The advantages of using a positional value instead of an option for the same are that the command line is shorter(no option name, just the position) and the value is clearly mandatory.
|
1091
|
+
|
1092
|
+
The disadvantage is that it is not possible to define a default value in a config file or environment variable like for options.
|
1093
|
+
Nevertheless, [Extended Values](#extended) syntax is supported, so it is possible to retrieve a value from the config file or environment variable.
|
938
1094
|
|
939
1095
|
### Interactive Input
|
940
1096
|
|
@@ -1006,6 +1162,16 @@ ascli aoc admin res user list --fields=name,email,ats_admin --query=@json:'{"sor
|
|
1006
1162
|
|
1007
1163
|
> **Note:** `select` filters selected elements from the result of API calls, while the `query` parameters gives filtering parameters to the API when listing elements.
|
1008
1164
|
|
1165
|
+
#### entity identifier
|
1166
|
+
|
1167
|
+
When a command is executed on a single entity, the entity is identified by a unique identifier that follows the command: e.g. `ascli aoc admin res user show 1234` where `1234` is the user identifier.
|
1168
|
+
|
1169
|
+
> **Note:** The legacy option `id` is deprecated: `--id=1234` as it does not provide the possibility to have sub-entities.
|
1170
|
+
|
1171
|
+
Only some commands provide the following capability: If the entity can also be uniquely identified by a name, then the name can be used instead of the identifier, using the **percent selector**: `ascli aoc admin res user show %name:john` where `john` is the user name.
|
1172
|
+
|
1173
|
+
Syntax: `%<field>:<value>`
|
1174
|
+
|
1009
1175
|
#### Verbosity of output
|
1010
1176
|
|
1011
1177
|
Output messages are categorized in 3 types:
|
@@ -1235,9 +1401,9 @@ ascli config open
|
|
1235
1401
|
Older format for commands are still supported:
|
1236
1402
|
|
1237
1403
|
```bash
|
1238
|
-
ascli config
|
1239
|
-
ascli config over
|
1240
|
-
ascli config list
|
1404
|
+
ascli config preset set|delete|show|initialize|update <name>
|
1405
|
+
ascli config preset over
|
1406
|
+
ascli config preset list
|
1241
1407
|
```
|
1242
1408
|
|
1243
1409
|
#### <a id="lprtconf"></a>Special Option preset: config
|
@@ -1268,13 +1434,37 @@ ascli config preset get default _plugin_name_
|
|
1268
1434
|
|
1269
1435
|
#### <a id="config"></a>Plugin: `config`: Configuration
|
1270
1436
|
|
1271
|
-
Plugin `config`
|
1437
|
+
Plugin `config` provides general commands for `ascli`:
|
1438
|
+
|
1439
|
+
- Option preset, config file operations
|
1440
|
+
- wizard
|
1441
|
+
- vault
|
1442
|
+
- ascp
|
1443
|
+
|
1444
|
+
The default configuration for `config` is read for any plugin invocation, this allows setting global options, such as `--log-level` or `--interactive`.
|
1445
|
+
When `ascli` starts, it looks for the `default` Option preset and checks the value for `config`.
|
1446
|
+
If set, it loads the option values for any plugin used.
|
1447
|
+
|
1448
|
+
> **Note:** 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`)
|
1449
|
+
|
1450
|
+
Show current default (global) Option preset (`config` plugin):
|
1451
|
+
|
1452
|
+
```console
|
1453
|
+
$ ascli conf preset get default config
|
1454
|
+
global_common_defaults
|
1455
|
+
```
|
1456
|
+
|
1457
|
+
```bash
|
1458
|
+
ascli conf preset set global_common_defaults version_check_days 0
|
1459
|
+
```
|
1272
1460
|
|
1273
|
-
|
1461
|
+
If the default global Option preset is not set:
|
1274
1462
|
|
1275
|
-
|
1463
|
+
```bash
|
1464
|
+
ascli conf preset set default config global_common_defaults
|
1465
|
+
```
|
1276
1466
|
|
1277
|
-
|
1467
|
+
#### Config sample commands
|
1278
1468
|
|
1279
1469
|
```bash
|
1280
1470
|
config ascp connect info 'Aspera Connect for Windows'
|
@@ -1377,7 +1567,7 @@ Some options are global, some options are available only for some plugins. (the
|
|
1377
1567
|
|
1378
1568
|
Options are loaded using this algorithm:
|
1379
1569
|
|
1380
|
-
- If option `--no-default` (or `-N`) is specified, then no default value is loaded
|
1570
|
+
- If option `--no-default` (or `-N`) is specified, then no default value is loaded for the plugin
|
1381
1571
|
- else it looks for the name of the plugin as key in section `default`, the value is the name of the default [option preset](#lprt) for it, and loads it.
|
1382
1572
|
- If option `--preset=<name or extended value hash>` is specified (or `-Pxxxx`), this reads the [option preset](#lprt) specified from the configuration file, or of the value is a Hash, it uses it as options values.
|
1383
1573
|
- Environment variables are evaluated
|
@@ -1459,7 +1649,7 @@ ascli config preset set default shares shares06
|
|
1459
1649
|
- Display the content of configuration file in table format
|
1460
1650
|
|
1461
1651
|
```bash
|
1462
|
-
ascli config overview
|
1652
|
+
ascli config preset overview
|
1463
1653
|
```
|
1464
1654
|
|
1465
1655
|
- Execute a command on the shares application using default parameters
|
@@ -1718,13 +1908,13 @@ Examples:
|
|
1718
1908
|
- display debugging log on `stdout`:
|
1719
1909
|
|
1720
1910
|
```bash
|
1721
|
-
ascli conf over --log-level=debug --logger=stdout
|
1911
|
+
ascli conf pre over --log-level=debug --logger=stdout
|
1722
1912
|
```
|
1723
1913
|
|
1724
1914
|
- log errors to `syslog`:
|
1725
1915
|
|
1726
1916
|
```bash
|
1727
|
-
ascli conf over --log-level=error --logger=syslog
|
1917
|
+
ascli conf pre over --log-level=error --logger=syslog
|
1728
1918
|
```
|
1729
1919
|
|
1730
1920
|
When `ascli` is used interactively in a shell, the shell itself will usually log executed commands in the history file.
|
@@ -1848,7 +2038,7 @@ Only supported with the `direct` agent: To specify a proxy for legacy HTTP fallb
|
|
1848
2038
|
|
1849
2039
|
### FASP proxy (forward) for transfers
|
1850
2040
|
|
1851
|
-
To specify a FASP proxy (forward), set the [*transfer-spec*](#transferspec) parameter: `
|
2041
|
+
To specify a FASP proxy (forward), set the [*transfer-spec*](#transferspec) parameter: `proxy` (only supported with the `direct` agent).
|
1852
2042
|
|
1853
2043
|
### <a id="client"></a>FASP configuration
|
1854
2044
|
|
@@ -2184,11 +2374,13 @@ Parameters provided in option `transfer_info` are:
|
|
2184
2374
|
| url | string | URL of the HTTP GW</br>Mandatory |
|
2185
2375
|
| upload_bar_refresh_sec | float | Refresh rate for upload progress bar |
|
2186
2376
|
| upload_chunk_size | int | Size in bytes of chunks for upload |
|
2377
|
+
| api_version | string | v1 or v2, for force use of version |
|
2378
|
+
| synchronous | bool | wait for each message acknowledgment |
|
2187
2379
|
|
2188
2380
|
Example:
|
2189
2381
|
|
2190
2382
|
```bash
|
2191
|
-
ascli faspex package recv
|
2383
|
+
ascli faspex package recv 323 --transfer=httpgw --transfer-info=@json:'{"url":"https://asperagw.example.com:9443/aspera/http-gwy"}'
|
2192
2384
|
```
|
2193
2385
|
|
2194
2386
|
> **Note:** The gateway only supports transfers authorized with a token.
|
@@ -2231,7 +2423,10 @@ The [*transfer-spec*](#transferspec) is a Hash (dictionary), so it is described
|
|
2231
2423
|
|
2232
2424
|
It is possible to modify or add any of the supported [*transfer-spec*](#transferspec) parameter using the `ts` option.
|
2233
2425
|
The `ts` option accepts a [Structured Value](#native) containing one or several [*transfer-spec*](#transferspec) parameters in a `Hash`.
|
2234
|
-
Multiple `ts` options on command line are cumulative.
|
2426
|
+
Multiple `ts` options on command line are cumulative, and Hash is deeply merged.
|
2427
|
+
To remove a (deep) key from transfer spec, set the value to `null`.
|
2428
|
+
|
2429
|
+
> **Note:** Default transfer spec values can be displayed with command: `config ascp info --flat-hash=no` under field `ts`.
|
2235
2430
|
|
2236
2431
|
It is possible to specify `ascp` options when the `transfer` option is set to [`direct`](#agt_direct) using `transfer_info` option parameter: `ascp_args`.
|
2237
2432
|
Example: `--transfer-info=@json:'{"ascp_args":["-l","100m"]}'`.
|
@@ -2353,7 +2548,7 @@ Fields with EX_ prefix are extensions to transfer agent [`direct`](#agt_direct).
|
|
2353
2548
|
| EX_license_text | string | Y | | | License file text override.<br/>By default ascp looks for license file near executable.<br/>(env:ASPERA_SCP_LICENSE) |
|
2354
2549
|
| EX_no_read | bool | Y | | | no read source<br/>(--no-read) |
|
2355
2550
|
| EX_no_write | bool | Y | | | no write on destination<br/>(--no-write) |
|
2356
|
-
| EX_proxy_password | string | Y | | | Password used for Aspera proxy server authentication.<br/>May be overridden by password in URL
|
2551
|
+
| EX_proxy_password | string | Y | | | Password used for Aspera proxy server authentication.<br/>May be overridden by password in URL provided in parameter: proxy.<br/>(env:ASPERA_PROXY_PASS) |
|
2357
2552
|
| EX_ssh_key_paths | array | Y | | | Use public key authentication for SSH and specify the private key file paths<br/>(-i {array}) |
|
2358
2553
|
|
2359
2554
|
#### Destination folder for transfers
|
@@ -2461,6 +2656,58 @@ ascli server upload --src-type=pair ~/Documents/Samples/200KB.1 /Upload/sample1
|
|
2461
2656
|
|
2462
2657
|
> **Note:** There are some specific rules to specify a file list when using **Aspera on Cloud**, refer to the AoC plugin section.
|
2463
2658
|
|
2659
|
+
#### Source directory structure on destination
|
2660
|
+
|
2661
|
+
This section is not specific to `ascli`, it is `ascp` behaviour.
|
2662
|
+
|
2663
|
+
The transfer destination is normally expected to designate a destination folder.
|
2664
|
+
|
2665
|
+
But there is one exception: The destination specifies the new item name when the following are met:
|
2666
|
+
|
2667
|
+
- there is a single source item (file or folder)
|
2668
|
+
- transfer spec `create_dir` is not set to `true` (`ascp` option `-d` not provided)
|
2669
|
+
- destination is not an existing folder
|
2670
|
+
- the `dirname` of destination is an existing folder
|
2671
|
+
|
2672
|
+
For this reason it is recommended to set `create_dir` to `true` for consistent behaviour between single and multiple items transfer, this is the default in `ascli`.
|
2673
|
+
|
2674
|
+
If a simple source file list is provided (no `destination` in `paths`, i.e. no `file_pair_list` provided), the destination folder is used as destination folder for each source file, and source file folder names are not preserved.
|
2675
|
+
|
2676
|
+
The inner structure of source items that are folder is preserved on destination.
|
2677
|
+
|
2678
|
+
A leading `/` on destination is ignored (relative to docroot) unless docroot is not set (relative to home).
|
2679
|
+
|
2680
|
+
In the following table source folder `d3` contains 2 files: `f1` and `d4/f2`.
|
2681
|
+
|
2682
|
+
| Source files | Destination | Folders on Dest. |`create_dir`| Destination Files |
|
2683
|
+
|--------------|-------------|-------------------|------------|-----------------------------|
|
2684
|
+
| f1 | d/f | - | false | Error: `d` does not exist. |
|
2685
|
+
| f1 | d/f | d | false | d/f (renamed) |
|
2686
|
+
| f1 | d/f/. | d | false | d/f (renamed) |
|
2687
|
+
| f1 | d/f | d/f | false | d/f/f1 |
|
2688
|
+
| f1 f2 | d | d | false | d/f1 d/f2 |
|
2689
|
+
| d3 | d | - | false | d/f1 d/f2 (renamed) |
|
2690
|
+
| f1 | d | - | true | d/f1 |
|
2691
|
+
| f1 f2 | d | - | true | d/f1 d/f2 |
|
2692
|
+
| d1/f1 d2/f2 | d | - | true | d/f1 d/f2 |
|
2693
|
+
| d3 | d | - | true | d/d3/f1 d/d3/d4/f2 |
|
2694
|
+
|
2695
|
+
If a file par list is provided then it is possible to rename or specify a different destination folder for each source (relative to the destination).
|
2696
|
+
|
2697
|
+
If transfer spec has a `src_base`, it has the side effect that the simple source file list is considered as a file pair list, and so the lower structure of source folders is preserved on destination.
|
2698
|
+
|
2699
|
+
| Source files | Destination |`src_base`| Destination Files |
|
2700
|
+
|-------------------|-------------|----------|-----------------------------|
|
2701
|
+
| d1/d2/f2 d1/d3/f3 | d | d1 | d/d2/f2 d/d3/f3 |
|
2702
|
+
|
2703
|
+
Advanced Example: Send files `./file1` and `./folder2/files2` to server (e.g. `/Upload`) and keep the original file names and folders, i.e. send `file1` to `/Upload/file1` and `files2` to `/Upload/folder2/files2`.
|
2704
|
+
|
2705
|
+
- If files are specified as `./file1 ./folder2/files2`, then destination will be: `/Upload/file1 /Upload/files2`
|
2706
|
+
- One possibility is to specify a file pair list: `--src-type=pair file1 file1 folder2/files2 folder2/files2`
|
2707
|
+
- Another possibility is to specify a source base: `--src-base=$PWD $PWD/file1 $PWD/folder2/files2` (note that `.` cannot be used as source base)
|
2708
|
+
- Similarly, create a temporary soft link (Linux): `ln -s . tmp_base` and use `--src-base=tmp_base tmp_base/file1 tmp_base/folder2/files2`
|
2709
|
+
- One can also similarly use `--sources=@ts` and specify the list of files in the `paths` field of transfer spec with both `source` and `destination` for each file.
|
2710
|
+
|
2464
2711
|
#### <a id="multisession"></a>Support of multi-session
|
2465
2712
|
|
2466
2713
|
Multi session, i.e. starting a transfer of a file set using multiple sessions (one `ascp` process per session) is supported on `direct` and `node` agents, not yet on connect.
|
@@ -2487,11 +2734,10 @@ When multi-session is used, one separate UDP port is used per session (refer to
|
|
2487
2734
|
|
2488
2735
|
#### Content protection
|
2489
2736
|
|
2490
|
-
Also known as Client-side encryption at rest (CSEAR), content protection allows a client to send files to a server
|
2491
|
-
|
2492
|
-
using a passphrase, only known by users sharing files. Files stay encrypted on server side.
|
2737
|
+
Also known as Client-side encryption at rest (CSEAR), content protection allows a client to send files to a server which will store them encrypted (upload), and decrypt files as they are being downloaded from a server, both using a passphrase, only known by users sharing files.
|
2738
|
+
Files stay encrypted on server side.
|
2493
2739
|
|
2494
|
-
|
2740
|
+
Activating CSEAR consists in using transfer spec parameters:
|
2495
2741
|
|
2496
2742
|
- `content_protection` : activate encryption (`encrypt` for upload) or decryption (`decrypt` for download)
|
2497
2743
|
- `content_protection_password` : the passphrase to be used.
|
@@ -2653,10 +2899,13 @@ One of the adapters, used in this manual, for testing, is `faux`. It is a pseudo
|
|
2653
2899
|
|
2654
2900
|
### <a id="faux_testing"></a>`faux:` for testing
|
2655
2901
|
|
2656
|
-
This is an extract of the man page of `ascp`.
|
2902
|
+
This is an extract of the man page of `ascp`.
|
2903
|
+
This feature is a feature of `ascp`, not `ascli`.
|
2657
2904
|
|
2658
2905
|
This adapter can be used to simulate a file or a directory.
|
2659
2906
|
|
2907
|
+
To discard data at the destination, the destination argument is set to `faux://`.
|
2908
|
+
|
2660
2909
|
To send uninitialized data in place of an actual source file, the source file is replaced with an argument of the form:
|
2661
2910
|
|
2662
2911
|
```bash
|
@@ -2710,8 +2959,6 @@ The sequence parameter is applied as follows:
|
|
2710
2959
|
|
2711
2960
|
Filenames generated are of the form: `<file>_<00000 ... count>_<filesize>`
|
2712
2961
|
|
2713
|
-
To discard data at the destination, the destination argument is set to `faux://` .
|
2714
|
-
|
2715
2962
|
Examples:
|
2716
2963
|
|
2717
2964
|
- Upload 20 gibibytes of random data to file myfile to directory /Upload
|
@@ -2737,7 +2984,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1m&size=0&inc=2&seq=seque
|
|
2737
2984
|
```text
|
2738
2985
|
ascli -h
|
2739
2986
|
NAME
|
2740
|
-
ascli -- a command line tool for Aspera Applications (v4.
|
2987
|
+
ascli -- a command line tool for Aspera Applications (v4.14.0)
|
2741
2988
|
|
2742
2989
|
SYNOPSIS
|
2743
2990
|
ascli COMMANDS [OPTIONS] [ARGS]
|
@@ -2767,52 +3014,52 @@ ARGS
|
|
2767
3014
|
Some commands require mandatory arguments, e.g. a path.
|
2768
3015
|
|
2769
3016
|
OPTIONS: global
|
2770
|
-
--interactive=ENUM
|
2771
|
-
--ask-options=ENUM
|
2772
|
-
--format=ENUM
|
2773
|
-
--display=ENUM
|
2774
|
-
--fields=VALUE
|
2775
|
-
--select=VALUE
|
2776
|
-
--table-style=VALUE
|
2777
|
-
--flat-hash=ENUM
|
2778
|
-
--transpose-single=ENUM
|
2779
|
-
--show-secrets=ENUM
|
2780
|
-
-h, --help Show this message
|
2781
|
-
--bash-comp
|
2782
|
-
--show-config Display parameters used for the provided action
|
2783
|
-
-r, --rest-debug
|
2784
|
-
-v, --version
|
2785
|
-
-w, --warnings
|
2786
|
-
--ui=ENUM
|
3017
|
+
--interactive=ENUM Use interactive input of missing params: [no], yes
|
3018
|
+
--ask-options=ENUM Ask even optional options: [no], yes
|
3019
|
+
--format=ENUM Output format: text, nagios, ruby, json, jsonpp, yaml, [table], csv
|
3020
|
+
--display=ENUM Output only some information: [info], data, error
|
3021
|
+
--fields=VALUE Comma separated list of fields, or ALL, or DEF
|
3022
|
+
--select=VALUE Select only some items in lists: column, value (Hash)
|
3023
|
+
--table-style=VALUE Table display style
|
3024
|
+
--flat-hash=ENUM Display deep values as additional keys: no, [yes]
|
3025
|
+
--transpose-single=ENUM Single object fields output vertically: no, [yes]
|
3026
|
+
--show-secrets=ENUM Show secrets on command output: [no], yes
|
3027
|
+
-h, --help Show this message
|
3028
|
+
--bash-comp Generate bash completion for command
|
3029
|
+
--show-config Display parameters used for the provided action
|
3030
|
+
-r, --rest-debug More debug for HTTP calls (REST)
|
3031
|
+
-v, --version Display version
|
3032
|
+
-w, --warnings Check for language warnings
|
3033
|
+
--ui=ENUM Method to start browser: text, [graphical]
|
2787
3034
|
--log-level=ENUM Log level: debug, info, [warn], error, fatal, unknown
|
2788
|
-
--logger=ENUM
|
2789
|
-
--lock-port=VALUE
|
2790
|
-
--http-options=VALUE
|
2791
|
-
--insecure=ENUM
|
2792
|
-
--once-only=ENUM
|
2793
|
-
--log-secrets=ENUM
|
2794
|
-
--cache-tokens=ENUM
|
3035
|
+
--logger=ENUM Logging method: [stderr], stdout, syslog
|
3036
|
+
--lock-port=VALUE Prevent dual execution of a command, e.g. in cron
|
3037
|
+
--http-options=VALUE Options for http socket (Hash)
|
3038
|
+
--insecure=ENUM Do not validate HTTPS certificate: [no], yes
|
3039
|
+
--once-only=ENUM Process only new items (some commands): [no], yes
|
3040
|
+
--log-secrets=ENUM Show passwords in logs: [no], yes
|
3041
|
+
--cache-tokens=ENUM Save and reuse Oauth tokens: no, [yes]
|
2795
3042
|
|
2796
3043
|
COMMAND: config
|
2797
|
-
SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test
|
3044
|
+
SUBCOMMANDS: ascp check_update coffee detect documentation echo email_test file flush_tokens folder gem genkey initdemo open plugin preset proxy_check smtp_settings vault wizard
|
2798
3045
|
OPTIONS:
|
2799
|
-
--query=VALUE
|
2800
|
-
--value=VALUE
|
2801
|
-
--property=VALUE
|
2802
|
-
--id=VALUE
|
3046
|
+
--query=VALUE Additional filter for for some commands (list/delete) (Hash)
|
3047
|
+
--value=VALUE Value for create, update, list filter (Hash) (deprecated: Use positional value for create/modify or option: query for list/delete)
|
3048
|
+
--property=VALUE Name of property to set (modify operation)
|
3049
|
+
--id=VALUE Resource identifier (deprecated: Use identifier after verb (modify,delete,show))
|
2803
3050
|
--bulk=ENUM Bulk operation (only some): [no], yes
|
2804
|
-
--bfail=ENUM Bulk operation error handling:
|
2805
|
-
--config-file=VALUE
|
2806
|
-
-N, --no-default
|
3051
|
+
--bfail=ENUM Bulk operation error handling: no, [yes]
|
3052
|
+
--config-file=VALUE Read parameters from file in YAML format, current=/usershome/.aspera/ascli/config.yaml
|
3053
|
+
-N, --no-default Do not load default configuration for plugin
|
2807
3054
|
--override=ENUM Wizard: override existing value: [no], yes
|
2808
|
-
--use-generic-client=ENUM Wizard: AoC: use global or org specific jwt client id:
|
2809
|
-
--default=ENUM Wizard: set as default configuration for specified plugin (also: update):
|
3055
|
+
--use-generic-client=ENUM Wizard: AoC: use global or org specific jwt client id: no, [yes]
|
3056
|
+
--default=ENUM Wizard: set as default configuration for specified plugin (also: update): no, [yes]
|
2810
3057
|
--test-mode=ENUM Wizard: skip private key check step: [no], yes
|
2811
|
-
-P, --presetVALUE
|
3058
|
+
-P, --presetVALUE Load the named option preset from current config file
|
2812
3059
|
--pkeypath=VALUE Wizard: path to private key for JWT
|
2813
3060
|
--ascp-path=VALUE Path to ascp
|
2814
3061
|
--use-product=VALUE Use ascp from specified product
|
2815
|
-
--smtp=VALUE SMTP configuration (
|
3062
|
+
--smtp=VALUE SMTP configuration (Hash)
|
2816
3063
|
--fpac=VALUE Proxy auto configuration script
|
2817
3064
|
--proxy-credentials=VALUE HTTP proxy credentials (Array with user and password)
|
2818
3065
|
--secret=VALUE Secret for access keys
|
@@ -2824,65 +3071,63 @@ OPTIONS:
|
|
2824
3071
|
--notif-template=VALUE Email ERB template for notification of transfers
|
2825
3072
|
--version-check-days=VALUE Period in days to check new version (zero to disable)
|
2826
3073
|
--plugin-folder=VALUE Folder where to find additional plugins
|
2827
|
-
--ts=VALUE Override transfer spec values (Hash
|
3074
|
+
--ts=VALUE Override transfer spec values (Hash)
|
2828
3075
|
--to-folder=VALUE Destination folder for transferred files
|
2829
3076
|
--sources=VALUE How list of transferred files is provided (@args,@ts,Array)
|
2830
|
-
--src-type=ENUM Type of file list: list, pair
|
2831
|
-
--transfer=ENUM Type of transfer agent: direct, node, connect, httpgw, trsdk
|
3077
|
+
--src-type=ENUM Type of file list: [list], pair
|
3078
|
+
--transfer=ENUM Type of transfer agent: [direct], node, connect, httpgw, trsdk
|
2832
3079
|
--transfer-info=VALUE Parameters for transfer agent (Hash)
|
2833
|
-
--progress=ENUM Type of progress bar: none, native, multi
|
3080
|
+
--progress=ENUM Type of progress bar: none, [native], multi
|
2834
3081
|
|
2835
3082
|
|
2836
3083
|
COMMAND: shares
|
2837
|
-
SUBCOMMANDS: admin health
|
3084
|
+
SUBCOMMANDS: admin files health
|
2838
3085
|
OPTIONS:
|
2839
3086
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2840
|
-
--username=VALUE
|
2841
|
-
--password=VALUE
|
2842
|
-
--type=ENUM Type of user/group for operations: any, local, ldap, saml
|
3087
|
+
--username=VALUE Username to log in
|
3088
|
+
--password=VALUE User's password
|
3089
|
+
--type=ENUM Type of user/group for operations: [any], local, ldap, saml
|
2843
3090
|
|
2844
3091
|
|
2845
3092
|
COMMAND: node
|
2846
3093
|
SUBCOMMANDS: access_key api_details asperabrowser async basic_token browse central delete download events health info license mkdir mkfile mklink rename search service space ssync stream sync transfer upload watch_folder
|
2847
3094
|
OPTIONS:
|
2848
3095
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2849
|
-
--username=VALUE
|
2850
|
-
--password=VALUE
|
2851
|
-
--validator=VALUE
|
3096
|
+
--username=VALUE Username to log in
|
3097
|
+
--password=VALUE User's password
|
3098
|
+
--validator=VALUE Identifier of validator (optional for central)
|
2852
3099
|
--asperabrowserurl=VALUE URL for simple aspera web ui
|
2853
|
-
--sync-name=VALUE
|
2854
|
-
--
|
2855
|
-
--token-type=ENUM type of token used for transfers: aspera, basic, hybrid
|
2856
|
-
--default-ports=ENUM use standard FASP ports or get from node api (gen4): [no], yes
|
3100
|
+
--sync-name=VALUE Sync name
|
3101
|
+
--default-ports=ENUM Use standard FASP ports or get from node api (gen4): no, [yes]
|
2857
3102
|
|
2858
3103
|
|
2859
3104
|
COMMAND: orchestrator
|
2860
3105
|
SUBCOMMANDS: health info plugins processes workflow
|
2861
3106
|
OPTIONS:
|
2862
3107
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2863
|
-
--username=VALUE
|
2864
|
-
--password=VALUE
|
2865
|
-
--params=VALUE parameters
|
2866
|
-
--result=VALUE
|
2867
|
-
--synchronous=ENUM
|
2868
|
-
--ret-style=ENUM
|
2869
|
-
--auth-style=ENUM
|
3108
|
+
--username=VALUE Username to log in
|
3109
|
+
--password=VALUE User's password
|
3110
|
+
--params=VALUE Start parameters (Hash)
|
3111
|
+
--result=VALUE Specify result value as: 'work step:parameter'
|
3112
|
+
--synchronous=ENUM Work step:parameter expected as result: [no], yes
|
3113
|
+
--ret-style=ENUM How return type is requested in api: header, [arg], ext
|
3114
|
+
--auth-style=ENUM Authentication type: arg_pass, [head_basic], apikey
|
2870
3115
|
|
2871
3116
|
|
2872
3117
|
COMMAND: bss
|
2873
3118
|
SUBCOMMANDS: subscription
|
2874
3119
|
OPTIONS:
|
2875
3120
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2876
|
-
--username=VALUE
|
2877
|
-
--password=VALUE
|
3121
|
+
--username=VALUE Username to log in
|
3122
|
+
--password=VALUE User's password
|
2878
3123
|
|
2879
3124
|
|
2880
3125
|
COMMAND: alee
|
2881
3126
|
SUBCOMMANDS: entitlement
|
2882
3127
|
OPTIONS:
|
2883
3128
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2884
|
-
--username=VALUE
|
2885
|
-
--password=VALUE
|
3129
|
+
--username=VALUE Username to log in
|
3130
|
+
--password=VALUE User's password
|
2886
3131
|
|
2887
3132
|
|
2888
3133
|
COMMAND: ats
|
@@ -2901,17 +3146,18 @@ COMMAND: faspex5
|
|
2901
3146
|
SUBCOMMANDS: admin bearer_token gateway health packages postprocessing shared_folders user version
|
2902
3147
|
OPTIONS:
|
2903
3148
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2904
|
-
--username=VALUE
|
2905
|
-
--password=VALUE
|
3149
|
+
--username=VALUE Username to log in
|
3150
|
+
--password=VALUE User's password
|
2906
3151
|
--client-id=VALUE OAuth client identifier
|
2907
3152
|
--client-secret=VALUE OAuth client secret
|
2908
3153
|
--redirect-uri=VALUE OAuth redirect URI for web authentication
|
2909
|
-
--auth=ENUM OAuth type of authentication: boot, link, web, jwt
|
2910
|
-
--box=VALUE Package inbox, either shared inbox name or one of ["inbox", "inbox_history", "inbox_all", "inbox_all_history", "outbox", "outbox_history", "pending", "pending_history", "all"]
|
3154
|
+
--auth=ENUM OAuth type of authentication: boot, link, web, [jwt]
|
2911
3155
|
--private-key=VALUE OAuth JWT RSA private key PEM value (prefix file path with @file:)
|
2912
|
-
--passphrase=VALUE RSA private key passphrase
|
2913
|
-
--
|
2914
|
-
--
|
3156
|
+
--passphrase=VALUE OAuth JWT RSA private key passphrase
|
3157
|
+
--link=VALUE Public link authorization (specific operations)
|
3158
|
+
--box=VALUE Package inbox, either shared inbox name or one of ["inbox", "inbox_history", "inbox_all", "inbox_all_history", "outbox", "outbox_history", "pending", "pending_history", "all"] or ALL
|
3159
|
+
--shared-folder=VALUE Send package with files from shared folder
|
3160
|
+
--group-type=ENUM Shared inbox or workgroup: [shared_inboxes], workgroups
|
2915
3161
|
|
2916
3162
|
|
2917
3163
|
COMMAND: cos
|
@@ -2930,50 +3176,50 @@ COMMAND: faspex
|
|
2930
3176
|
SUBCOMMANDS: address_book dropbox health login_methods me package source v4
|
2931
3177
|
OPTIONS:
|
2932
3178
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2933
|
-
--username=VALUE
|
2934
|
-
--password=VALUE
|
2935
|
-
--link=VALUE
|
2936
|
-
--delivery-info=VALUE
|
2937
|
-
--source-name=VALUE
|
3179
|
+
--username=VALUE Username to log in
|
3180
|
+
--password=VALUE User's password
|
3181
|
+
--link=VALUE Public link for specific operation
|
3182
|
+
--delivery-info=VALUE Package delivery information (Hash)
|
3183
|
+
--source-name=VALUE Create package from remote source (by name)
|
2938
3184
|
--storage=VALUE Faspex local storage definition
|
2939
|
-
--recipient=VALUE
|
2940
|
-
--box=ENUM
|
3185
|
+
--recipient=VALUE Use if recipient is a dropbox (with *)
|
3186
|
+
--box=ENUM Package box: [inbox], archive, sent
|
2941
3187
|
|
2942
3188
|
|
2943
3189
|
COMMAND: preview
|
2944
3190
|
SUBCOMMANDS: check events scan test trevents
|
2945
3191
|
OPTIONS:
|
2946
3192
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2947
|
-
--username=VALUE
|
2948
|
-
--password=VALUE
|
2949
|
-
--skip-format=ENUM
|
2950
|
-
--folder-reset-cache=ENUM
|
2951
|
-
--skip-types=VALUE
|
2952
|
-
--previews-folder=VALUE
|
2953
|
-
--temp-folder=VALUE
|
2954
|
-
--skip-folders=VALUE
|
2955
|
-
--case=VALUE
|
2956
|
-
--scan-path=VALUE
|
2957
|
-
--scan-id=VALUE
|
2958
|
-
--mimemagic=ENUM
|
2959
|
-
--overwrite=ENUM
|
2960
|
-
--file-access=ENUM
|
2961
|
-
--max-size=VALUE
|
2962
|
-
--thumb-vid-scale=VALUE
|
2963
|
-
--thumb-vid-fraction=VALUE
|
2964
|
-
--thumb-img-size=VALUE
|
2965
|
-
--thumb-text-font=VALUE
|
2966
|
-
--video-conversion=ENUM
|
2967
|
-
--video-png-conv=ENUM
|
2968
|
-
--video-scale=VALUE
|
2969
|
-
--video-start-sec=VALUE
|
2970
|
-
--reencode-ffmpeg=VALUE
|
2971
|
-
--blend-keyframes=VALUE
|
2972
|
-
--blend-pauseframes=VALUE
|
2973
|
-
--blend-transframes=VALUE
|
2974
|
-
--blend-fps=VALUE
|
2975
|
-
--clips-count=VALUE
|
2976
|
-
--clips-length=VALUE
|
3193
|
+
--username=VALUE Username to log in
|
3194
|
+
--password=VALUE User's password
|
3195
|
+
--skip-format=ENUM Skip this preview format (multiple possible): png, mp4
|
3196
|
+
--folder-reset-cache=ENUM Force detection of generated preview by refresh cache: [no], header, read
|
3197
|
+
--skip-types=VALUE Skip types in comma separated list
|
3198
|
+
--previews-folder=VALUE Preview folder in storage root
|
3199
|
+
--temp-folder=VALUE Path to temp folder
|
3200
|
+
--skip-folders=VALUE List of folder to skip
|
3201
|
+
--case=VALUE Basename of output for for test
|
3202
|
+
--scan-path=VALUE Subpath in folder id to start scan in (default=/)
|
3203
|
+
--scan-id=VALUE Folder id in storage to start scan in, default is access key main folder id
|
3204
|
+
--mimemagic=ENUM Use Mime type detection of gem mimemagic: [no], yes
|
3205
|
+
--overwrite=ENUM When to overwrite result file: always, never, [mtime]
|
3206
|
+
--file-access=ENUM How to read and write files in repository: [local], remote
|
3207
|
+
--max-size=VALUE Maximum size (in bytes) of preview file
|
3208
|
+
--thumb-vid-scale=VALUE Png: video: size (ffmpeg scale argument)
|
3209
|
+
--thumb-vid-fraction=VALUE Png: video: time percent position of snapshot
|
3210
|
+
--thumb-img-size=VALUE Png: non-video: height (and width)
|
3211
|
+
--thumb-text-font=VALUE Png: plaintext: font to render text with imagemagick convert (identify -list font)
|
3212
|
+
--video-conversion=ENUM Mp4: method for preview generation: [reencode], blend, clips
|
3213
|
+
--video-png-conv=ENUM Mp4: method for thumbnail generation: [fixed], animated
|
3214
|
+
--video-scale=VALUE Mp4: all: video scale (ffmpeg)
|
3215
|
+
--video-start-sec=VALUE Mp4: all: start offset (seconds) of video preview
|
3216
|
+
--reencode-ffmpeg=VALUE Mp4: reencode: options to ffmpeg
|
3217
|
+
--blend-keyframes=VALUE Mp4: blend: # key frames
|
3218
|
+
--blend-pauseframes=VALUE Mp4: blend: # pause frames
|
3219
|
+
--blend-transframes=VALUE Mp4: blend: # transition blend frames
|
3220
|
+
--blend-fps=VALUE Mp4: blend: frame per second
|
3221
|
+
--clips-count=VALUE Mp4: clips: number of clips
|
3222
|
+
--clips-length=VALUE Mp4: clips: length in seconds of each clips
|
2977
3223
|
|
2978
3224
|
|
2979
3225
|
COMMAND: sync
|
@@ -2987,10 +3233,10 @@ COMMAND: aoc
|
|
2987
3233
|
SUBCOMMANDS: admin automation bearer_token files gateway organization packages reminder servers tier_restrictions user
|
2988
3234
|
OPTIONS:
|
2989
3235
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
2990
|
-
--username=VALUE
|
2991
|
-
--password=VALUE
|
2992
|
-
--auth=ENUM OAuth type of authentication: web, jwt
|
2993
|
-
--operation=ENUM
|
3236
|
+
--username=VALUE Username to log in
|
3237
|
+
--password=VALUE User's password
|
3238
|
+
--auth=ENUM OAuth type of authentication: web, [jwt]
|
3239
|
+
--operation=ENUM Client operation for transfers: [push], pull
|
2994
3240
|
--client-id=VALUE OAuth API client identifier
|
2995
3241
|
--client-secret=VALUE OAuth API client secret
|
2996
3242
|
--redirect-uri=VALUE OAuth API client redirect URI
|
@@ -3002,26 +3248,25 @@ OPTIONS:
|
|
3002
3248
|
--link=VALUE Public link to shared resource
|
3003
3249
|
--new-user-option=VALUE New user creation option for unknown package recipients
|
3004
3250
|
--from-folder=VALUE Source folder for Folder-to-Folder transfer
|
3005
|
-
--validate-metadata=ENUM Validate shared inbox metadata:
|
3251
|
+
--validate-metadata=ENUM Validate shared inbox metadata: no, [yes]
|
3006
3252
|
|
3007
3253
|
COMMAND: node
|
3008
3254
|
SUBCOMMANDS: access_key api_details asperabrowser async basic_token browse central delete download events health info license mkdir mkfile mklink rename search service space ssync stream sync transfer upload watch_folder
|
3009
3255
|
OPTIONS:
|
3010
|
-
--validator=VALUE
|
3256
|
+
--validator=VALUE Identifier of validator (optional for central)
|
3011
3257
|
--asperabrowserurl=VALUE URL for simple aspera web ui
|
3012
|
-
--sync-name=VALUE
|
3013
|
-
--
|
3014
|
-
--token-type=ENUM type of token used for transfers: aspera, basic, hybrid
|
3015
|
-
--default-ports=ENUM use standard FASP ports or get from node api (gen4): [no], yes
|
3258
|
+
--sync-name=VALUE Sync name
|
3259
|
+
--default-ports=ENUM Use standard FASP ports or get from node api (gen4): no, [yes]
|
3016
3260
|
|
3017
3261
|
|
3018
3262
|
COMMAND: server
|
3019
3263
|
SUBCOMMANDS: browse cp delete df download du health info ls md5sum mkdir mv rename rm sync upload
|
3020
3264
|
OPTIONS:
|
3021
3265
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
3022
|
-
--username=VALUE
|
3023
|
-
--password=VALUE
|
3266
|
+
--username=VALUE Username to log in
|
3267
|
+
--password=VALUE User's password
|
3024
3268
|
--ssh-keys=VALUE SSH key path list (Array or single)
|
3269
|
+
--passphrase=VALUE SSH private key passphrase
|
3025
3270
|
--ssh-options=VALUE SSH options (Hash)
|
3026
3271
|
|
3027
3272
|
|
@@ -3029,10 +3274,10 @@ COMMAND: console
|
|
3029
3274
|
SUBCOMMANDS: health transfer
|
3030
3275
|
OPTIONS:
|
3031
3276
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
3032
|
-
--username=VALUE
|
3033
|
-
--password=VALUE
|
3034
|
-
--filter-from=DATE
|
3035
|
-
--filter-to=DATE
|
3277
|
+
--username=VALUE Username to log in
|
3278
|
+
--password=VALUE User's password
|
3279
|
+
--filter-from=DATE Only after date
|
3280
|
+
--filter-to=DATE Only before date
|
3036
3281
|
|
3037
3282
|
|
3038
3283
|
```
|
@@ -3080,10 +3325,10 @@ For this, specify the option: `--use-generic-client=no`.
|
|
3080
3325
|
|
3081
3326
|
This will guide you through the steps to create.
|
3082
3327
|
|
3083
|
-
If the wizard does not detect the application but you know the application, you can force it using option `
|
3328
|
+
If the wizard does not detect the application but you know the application, you can force it using option `query`:
|
3084
3329
|
|
3085
3330
|
```bash
|
3086
|
-
ascli config wizard --
|
3331
|
+
ascli config wizard --query=aoc
|
3087
3332
|
```
|
3088
3333
|
|
3089
3334
|
### <a id="aocmanual"></a>Configuration: using manual setup
|
@@ -3351,7 +3596,7 @@ To execute an action on a specific resource, select it using one of those method
|
|
3351
3596
|
|
3352
3597
|
- *recommended*: give id directly on command line *after the action*: `aoc admin res node show 123`
|
3353
3598
|
- give name on command line *after the action*: `aoc admin res node show name abc`
|
3354
|
-
- provide option `id` : `aoc admin res node show
|
3599
|
+
- provide option `id` : `aoc admin res node show 123`
|
3355
3600
|
- provide option `name` : `aoc admin res node show --name=abc`
|
3356
3601
|
|
3357
3602
|
#### <a id="res_create"></a>Creating a resource
|
@@ -3406,7 +3651,7 @@ The secret is provided using the `secret` option.
|
|
3406
3651
|
For example in a command like:
|
3407
3652
|
|
3408
3653
|
```bash
|
3409
|
-
ascli aoc admin res node
|
3654
|
+
ascli aoc admin res node 123 --secret="my_secret_here" v3 info
|
3410
3655
|
```
|
3411
3656
|
|
3412
3657
|
It is also possible to store secrets in the [secret vault](#vault) and then automatically find the related secret using the [config finder](#config_finder).
|
@@ -3464,6 +3709,36 @@ The option `default_ports` ([yes]/no) allows ascli to retrieve the server ports
|
|
3464
3709
|
|
3465
3710
|
Refer to section "Examples" of [ATS](#ats) and substitute command `ats` with `aoc admin ats`.
|
3466
3711
|
|
3712
|
+
#### Files with type `link`
|
3713
|
+
|
3714
|
+
Aspera on Cloud Shared folders are implemented through a special type of file: `link`.
|
3715
|
+
A `link` is the equivalent of a symbolic link on a file system: it points to another folder (not file).
|
3716
|
+
|
3717
|
+
Listing a link (in terminal position of path) will information on the link itself, not the content of the folder it points to.
|
3718
|
+
To list the target folder content, add a `/` a the end of the path.
|
3719
|
+
|
3720
|
+
Example:
|
3721
|
+
|
3722
|
+
```console
|
3723
|
+
$ ascli aoc files br the_link
|
3724
|
+
Current Workspace: Default (default)
|
3725
|
+
+------------+------+----------------+------+----------------------+--------------+
|
3726
|
+
| name | type | recursive_size | size | modified_time | access_level |
|
3727
|
+
+------------+------+----------------+------+----------------------+--------------+
|
3728
|
+
| the_link | link | | | 2021-04-28T09:17:14Z | edit |
|
3729
|
+
+------------+------+----------------+------+----------------------+--------------+
|
3730
|
+
```
|
3731
|
+
|
3732
|
+
```console
|
3733
|
+
$ ascli aoc files br the_link/
|
3734
|
+
Current Workspace: Default (default)
|
3735
|
+
+-------------+------+----------------+------+----------------------+--------------+
|
3736
|
+
| name | type | recursive_size | size | modified_time | access_level |
|
3737
|
+
+-------------+------+----------------+------+----------------------+--------------+
|
3738
|
+
| file_inside | file | | | 2021-04-26T09:00:00Z | edit |
|
3739
|
+
+-------------+------+----------------+------+----------------------+--------------+
|
3740
|
+
```
|
3741
|
+
|
3467
3742
|
#### Example: Bulk creation of users
|
3468
3743
|
|
3469
3744
|
```bash
|
@@ -3507,7 +3782,7 @@ echo $thelist
|
|
3507
3782
|
```
|
3508
3783
|
|
3509
3784
|
```bash
|
3510
|
-
ascli aoc admin res user
|
3785
|
+
ascli aoc admin res user delete @json:"$thelist" --bulk=yes
|
3511
3786
|
```
|
3512
3787
|
|
3513
3788
|
```output
|
@@ -3548,13 +3823,13 @@ ascli aoc user workspaces list
|
|
3548
3823
|
Creation of a sub-access key is like creation of access key with the following difference: authentication to node API is made with accesskey (master access key) and only the path parameter is provided: it is relative to the storage root of the master key. (id and secret are optional)
|
3549
3824
|
|
3550
3825
|
```bash
|
3551
|
-
ascli aoc admin resource node --name=_node_name_ --secret=_secret_ v4 access_key create
|
3826
|
+
ascli aoc admin resource node --name=_node_name_ --secret=_secret_ v4 access_key create @json:'{"storage":{"path":"/folder1"}}'
|
3552
3827
|
```
|
3553
3828
|
|
3554
3829
|
#### Example: Display transfer events (ops/transfer)
|
3555
3830
|
|
3556
3831
|
```bash
|
3557
|
-
ascli aoc admin res node --secret=_secret_ v3 transfer list --
|
3832
|
+
ascli aoc admin res node --secret=_secret_ v3 transfer list --query=@json:'[["q","*"],["count",5]]'
|
3558
3833
|
```
|
3559
3834
|
|
3560
3835
|
Examples of query (TODO: cleanup):
|
@@ -3752,7 +4027,7 @@ jfqslfdjlfdjfhdjklqfhdkl
|
|
3752
4027
|
#### Example: delete all registration keys
|
3753
4028
|
|
3754
4029
|
```bash
|
3755
|
-
ascli aoc admin res client list --fields=id --format=csv|ascli aoc admin res client delete --bulk=yes
|
4030
|
+
ascli aoc admin res client list --fields=id --format=csv|ascli aoc admin res client delete @lines:@stdin: --bulk=yes
|
3756
4031
|
```
|
3757
4032
|
|
3758
4033
|
```output
|
@@ -3837,12 +4112,13 @@ The webmail-like application.
|
|
3837
4112
|
General syntax:
|
3838
4113
|
|
3839
4114
|
```bash
|
3840
|
-
ascli aoc packages send
|
4115
|
+
ascli aoc packages send [package extended value] [other parameters such as file list and transfer parameters]
|
3841
4116
|
```
|
3842
4117
|
|
3843
4118
|
Notes:
|
3844
4119
|
|
3845
|
-
-
|
4120
|
+
- Package creation parameter are sent as positional mandatory parameter.
|
4121
|
+
Refer to the AoC package creation API, or display an existing package in JSON to list attributes.
|
3846
4122
|
- List allowed shared inbox destinations with: `ascli aoc packages shared_inboxes list`
|
3847
4123
|
- Use fields: `recipients` and/or `bcc_recipients` to provide the list of recipients: user or shared inbox.
|
3848
4124
|
- Provide either ids as expected by API: `"recipients":[{"type":"dropbox","id":"1234"}]`
|
@@ -3854,19 +4130,19 @@ Notes:
|
|
3854
4130
|
#### Example: Send a package with one file to two users, using their email
|
3855
4131
|
|
3856
4132
|
```bash
|
3857
|
-
ascli aoc packages send
|
4133
|
+
ascli aoc packages send @json:'{"name":"my title","note":"my note","recipients":["laurent.martin.aspera@fr.ibm.com","other@example.com"]}' my_file.dat
|
3858
4134
|
```
|
3859
4135
|
|
3860
4136
|
#### Example: Send a package to a shared inbox with metadata
|
3861
4137
|
|
3862
4138
|
```bash
|
3863
|
-
ascli aoc packages send --workspace=eudemo
|
4139
|
+
ascli aoc packages send --workspace=eudemo @json:'{"name":"my pack title","recipients":["Shared Inbox With Meta"],"metadata":{"Project Id":"123","Type":"Opt2","CheckThose":["Check1","Check2"],"Optional Date":"2021-01-13T15:02:00.000Z"}}' ~/Documents/Samples/200KB.1
|
3864
4140
|
```
|
3865
4141
|
|
3866
4142
|
It is also possible to use identifiers and API parameters:
|
3867
4143
|
|
3868
4144
|
```bash
|
3869
|
-
ascli aoc packages send --workspace=eudemo
|
4145
|
+
ascli aoc packages send --workspace=eudemo @json:'{"name":"my pack title","recipients":[{"type":"dropbox","id":"12345"}],"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
|
3870
4146
|
```
|
3871
4147
|
|
3872
4148
|
#### Example: List packages in a given shared inbox
|
@@ -3925,7 +4201,7 @@ ascli aoc files browse /src_folder
|
|
3925
4201
|
Let's send a package with the file `10M.dat` from subfolder /src_folder in a package:
|
3926
4202
|
|
3927
4203
|
```bash
|
3928
|
-
ascli aoc files node_info /src_folder --format=json --display=data | ascli aoc packages send
|
4204
|
+
ascli aoc files node_info /src_folder --format=json --display=data | ascli aoc packages send @json:'{"name":"test","recipients":["laurent.martin.aspera@fr.ibm.com"]}' 10M.dat --transfer=node --transfer-info=@json:@stdin:
|
3929
4205
|
```
|
3930
4206
|
|
3931
4207
|
#### <a id="aoccargo"></a>Receive new packages only (Cargo)
|
@@ -3933,10 +4209,10 @@ ascli aoc files node_info /src_folder --format=json --display=data | ascli aoc p
|
|
3933
4209
|
It is possible to automatically download new packages, like using Aspera Cargo:
|
3934
4210
|
|
3935
4211
|
```bash
|
3936
|
-
ascli aoc packages recv
|
4212
|
+
ascli aoc packages recv ALL --once-only=yes --lock-port=12345
|
3937
4213
|
```
|
3938
4214
|
|
3939
|
-
-
|
4215
|
+
- `ALL` (case sensitive) will download all packages
|
3940
4216
|
- `--once-only=yes` keeps memory of any downloaded package in persistency files located in the configuration folder
|
3941
4217
|
- `--lock-port=12345` ensures that only one instance is started at the same time, to avoid running two downloads in parallel
|
3942
4218
|
|
@@ -3965,46 +4241,28 @@ ascli aoc files download <single file path>
|
|
3965
4241
|
|
3966
4242
|
#### Shared folders
|
3967
4243
|
|
3968
|
-
Shared folder by users are managed through **permissions**.
|
4244
|
+
Shared folder created by users are managed through **permissions**.
|
3969
4245
|
For creation, parameters are the same as for node api [permissions](https://developer.ibm.com/apis/catalog/aspera--aspera-node-api/api/API--aspera--node-api#post960739960).
|
3970
|
-
`ascli` expects the same payload for creation, but it will automatically
|
3971
|
-
Also, the pseudo key `with` is
|
4246
|
+
`ascli` expects the same payload for creation, but it will automatically populate required tags if needed.
|
4247
|
+
Also, the pseudo key `with` is available: it will lookup the name in the contacts and fill the proper type and id.
|
3972
4248
|
The pseudo parameter `link_name` allows changing default "shared as" name.
|
3973
4249
|
|
3974
4250
|
- List permissions on a shared folder as user
|
3975
4251
|
|
3976
4252
|
```bash
|
3977
|
-
ascli aoc files
|
4253
|
+
ascli aoc files perm /shared_folder_test1 list
|
3978
4254
|
```
|
3979
4255
|
|
3980
4256
|
- Share a personal folder with other users
|
3981
4257
|
|
3982
4258
|
```bash
|
3983
|
-
ascli aoc files
|
4259
|
+
ascli aoc files perm /shared_folder_test1 create @json:'{"with":"laurent"}'
|
3984
4260
|
```
|
3985
4261
|
|
3986
4262
|
- Revoke shared access
|
3987
4263
|
|
3988
4264
|
```bash
|
3989
|
-
ascli aoc files
|
3990
|
-
```
|
3991
|
-
|
3992
|
-
- List shared folders in node
|
3993
|
-
|
3994
|
-
```bash
|
3995
|
-
ascli aoc admin res node --id=8669 shared_folders
|
3996
|
-
```
|
3997
|
-
|
3998
|
-
- List shared folders in workspace
|
3999
|
-
|
4000
|
-
```bash
|
4001
|
-
ascli aoc admin res workspace --id=10818 shared_folders
|
4002
|
-
```
|
4003
|
-
|
4004
|
-
- List members of shared folder
|
4005
|
-
|
4006
|
-
```bash
|
4007
|
-
ascli aoc admin res node --id=8669 v4 perm 82 show
|
4265
|
+
ascli aoc files perm /shared_folder_test1 delete 6161
|
4008
4266
|
```
|
4009
4267
|
|
4010
4268
|
#### Cross Organization transfers
|
@@ -4039,42 +4297,52 @@ Explanation:
|
|
4039
4297
|
|
4040
4298
|
#### Find Files
|
4041
4299
|
|
4042
|
-
The command `aoc files find [--
|
4300
|
+
The command `aoc files find [--query=expression]` will recursively scan storage to find files matching the expression criteria. It works also on node resource using the v4 command. (see examples)
|
4043
4301
|
|
4044
4302
|
The expression can be of 3 formats:
|
4045
4303
|
|
4046
4304
|
- empty (default) : all files, equivalent to value: `exec:true`
|
4047
|
-
- not starting with `exec:` : the expression is a regular expression, using [Ruby Regex](https://ruby-doc.org/core/Regexp.html) syntax
|
4305
|
+
- not starting with `exec:` : the expression is a regular expression, using [Ruby Regex](https://ruby-doc.org/core/Regexp.html) syntax, equivalent to value: `exec:f['name'].match(/expression/)`
|
4048
4306
|
|
4049
|
-
For instance, to find files with a special extension, use `--
|
4307
|
+
For instance, to find files with a special extension, use `--query='\.myext$'`
|
4050
4308
|
|
4051
|
-
- starting with `exec:` : the Ruby code after the prefix is executed for each entry found. The entry variable name is `f`. The file is displayed if the result of the expression is true
|
4309
|
+
- starting with `exec:` : the Ruby code after the prefix is executed for each entry found. The entry variable name is `f`. The file is displayed if the result of the expression is true.
|
4052
4310
|
|
4053
|
-
Examples of expressions: (using like this: `--
|
4311
|
+
Examples of expressions: (using like this: `--query=exec:'<expression>'`)
|
4054
4312
|
|
4055
4313
|
- Find files more recent than 100 days
|
4056
4314
|
|
4057
|
-
```
|
4058
|
-
f["type"].eql?("file") and (DateTime.now-DateTime.parse(f["modified_time"]))<100
|
4059
|
-
```
|
4315
|
+
```ruby
|
4316
|
+
f["type"].eql?("file") and (DateTime.now-DateTime.parse(f["modified_time"]))<100
|
4317
|
+
```
|
4060
4318
|
|
4061
4319
|
- Find files older than 1 year on a given node and store in file list
|
4062
4320
|
|
4063
|
-
```
|
4064
|
-
|
4065
|
-
```
|
4321
|
+
```ruby
|
4322
|
+
f["type"].eql?("file") and (DateTime.now-DateTime.parse(f["modified_time"]))<100
|
4323
|
+
```
|
4324
|
+
|
4325
|
+
```bash
|
4326
|
+
ascli aoc admin res node --name='my node name' --secret='my_secret_here' v4 find / --fields=path --query='exec:<above expression here>' --format=csv > my_file_list.txt
|
4327
|
+
```
|
4328
|
+
|
4329
|
+
- Find files larger than 1MB
|
4330
|
+
|
4331
|
+
```ruby
|
4332
|
+
f["type"].eql?("file") and f["size"].to_i>1000000
|
4333
|
+
```
|
4066
4334
|
|
4067
4335
|
- Delete the files, one by one
|
4068
4336
|
|
4069
|
-
```bash
|
4070
|
-
cat my_file_list.txt|while read path;do echo ascli aoc admin res node --name='my node name' --secret='my_secret_here' v4 delete "$path" ;done
|
4071
|
-
```
|
4337
|
+
```bash
|
4338
|
+
cat my_file_list.txt|while read path;do echo ascli aoc admin res node --name='my node name' --secret='my_secret_here' v4 delete "$path" ;done
|
4339
|
+
```
|
4072
4340
|
|
4073
4341
|
- Delete the files in bulk
|
4074
4342
|
|
4075
|
-
```bash
|
4076
|
-
cat my_file_list.txt | ascli aoc admin res node --name='my node name' --secret='my_secret_here' v3 delete @lines:@stdin:
|
4077
|
-
```
|
4343
|
+
```bash
|
4344
|
+
cat my_file_list.txt | ascli aoc admin res node --name='my node name' --secret='my_secret_here' v3 delete @lines:@stdin:
|
4345
|
+
```
|
4078
4346
|
|
4079
4347
|
### AoC sample commands
|
4080
4348
|
|
@@ -4113,18 +4381,18 @@ aoc admin res workspace_membership list
|
|
4113
4381
|
aoc admin resource node --name=my_aoc_ak_name --secret=my_aoc_ak_secret do browse /
|
4114
4382
|
aoc admin resource node --name=my_aoc_ak_name --secret=my_aoc_ak_secret do delete /folder1
|
4115
4383
|
aoc admin resource node --name=my_aoc_ak_name --secret=my_aoc_ak_secret do mkdir /folder1
|
4116
|
-
aoc admin resource node --name=my_aoc_ak_name --secret=my_aoc_ak_secret do v3 access_key create
|
4384
|
+
aoc admin resource node --name=my_aoc_ak_name --secret=my_aoc_ak_secret do v3 access_key create @json:'{"id":"testsub1","storage":{"path":"/folder1"}}'
|
4117
4385
|
aoc admin resource node --name=my_aoc_ak_name --secret=my_aoc_ak_secret do v3 events
|
4118
4386
|
aoc admin resource node do name my_aoc_ak_name --secret=my_aoc_ak_secret v3 access_key delete testsub1
|
4119
4387
|
aoc admin resource workspace list
|
4120
4388
|
aoc admin resource workspace_membership list --fields=ALL --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
|
4121
4389
|
aoc admin subscription
|
4122
|
-
aoc automation workflow action my_wf_id create
|
4123
|
-
aoc automation workflow create
|
4390
|
+
aoc automation workflow action my_wf_id create @json:'{"name":"toto"}' \
|
4391
|
+
aoc automation workflow create @json:'{"name":"test_workflow"}'
|
4124
4392
|
aoc automation workflow delete my_wf_id
|
4125
4393
|
aoc automation workflow list
|
4394
|
+
aoc automation workflow list --query=@json:'{"show_org_workflows":"true"}' --scope=admin:all
|
4126
4395
|
aoc automation workflow list --select=@json:'{"name":"test_workflow"}' --fields=id --format=csv --display=data
|
4127
|
-
aoc automation workflow list --value=@json:'{"show_org_workflows":"true"}' --scope=admin:all
|
4128
4396
|
aoc bearer_token --display=data --scope=user:all
|
4129
4397
|
aoc faspex
|
4130
4398
|
aoc files bearer /
|
@@ -4133,27 +4401,28 @@ aoc files browse /
|
|
4133
4401
|
aoc files browse / --link=my_aoc_publink_folder
|
4134
4402
|
aoc files delete /testsrc
|
4135
4403
|
aoc files download --transfer=connect /200KB.1
|
4136
|
-
aoc files
|
4137
|
-
aoc files file permission --path=my_aoc_test_folder list
|
4138
|
-
aoc files file show --path=/200KB.1
|
4139
|
-
aoc files file show my_file_id
|
4140
|
-
aoc files find / --value='\.partial$'
|
4404
|
+
aoc files find / --query='\.partial$'
|
4141
4405
|
aoc files http_node_download --to-folder=. /200KB.1
|
4142
4406
|
aoc files mkdir /testsrc
|
4407
|
+
aoc files modify my_aoc_test_folder
|
4408
|
+
aoc files permission my_aoc_test_folder list
|
4143
4409
|
aoc files rename /somefolder testdst
|
4144
|
-
aoc files short_link create
|
4145
|
-
aoc files short_link create
|
4146
|
-
aoc files short_link list
|
4410
|
+
aoc files short_link create /testdst private
|
4411
|
+
aoc files short_link create testdst public
|
4412
|
+
aoc files short_link list /testdst private
|
4413
|
+
aoc files show %id:my_file_id
|
4414
|
+
aoc files show /200KB.1
|
4147
4415
|
aoc files sync ad st --sync-info=@json:'{"name":"syncv2","reset":true,"direction":"pull","local":{"path":"my_local_sync_dir"},"remote":{"path":"/testdst"}}'
|
4148
4416
|
aoc files sync ad st --sync-info=@json:'{"sessions":[{"name":"syncv1","direction":"pull","local_dir":"my_local_sync_dir","remote_dir":"/testdst","reset":true}]}'
|
4149
4417
|
aoc files sync start --sync-info=@json:'{"name":"syncv2","reset":true,"direction":"pull","local":{"path":"my_local_sync_dir"},"remote":{"path":"/testdst"}}'
|
4150
4418
|
aoc files sync start --sync-info=@json:'{"sessions":[{"name":"syncv1","direction":"pull","local_dir":"my_local_sync_dir","remote_dir":"/testdst","reset":true}]}'
|
4419
|
+
aoc files thumbnail my_aoc_media_file
|
4151
4420
|
aoc files transfer --from-folder=/testsrc --to-folder=/testdst testfile.bin
|
4152
4421
|
aoc files upload --to-folder=/ testfile.bin --link=my_aoc_publink_folder
|
4153
4422
|
aoc files upload --to-folder=/testsrc testfile.bin
|
4154
4423
|
aoc files upload Test.pdf --transfer=node --transfer-info=@json:@stdin:
|
4155
4424
|
aoc files v3 info
|
4156
|
-
aoc gateway
|
4425
|
+
aoc gateway https://localhost:12345/aspera/faspex
|
4157
4426
|
aoc org --link=my_aoc_publink_recv_from_aocuser
|
4158
4427
|
aoc organization
|
4159
4428
|
aoc packages browse "my_package_id" /contents
|
@@ -4162,13 +4431,13 @@ aoc packages list --query=@json:'{"dropbox_name":"my_aoc_shbx_name","sort":"-rec
|
|
4162
4431
|
aoc packages recv "my_package_id" --to-folder=.
|
4163
4432
|
aoc packages recv ALL --to-folder=. --once-only=yes --lock-port=12345
|
4164
4433
|
aoc packages recv ALL --to-folder=. --once-only=yes --lock-port=12345 --query=@json:'{"dropbox_name":"my_aoc_shbx_name","archived":false,"received":true,"has_content":true,"exclude_dropbox_packages":false,"include_draft":false}' --ts=@json:'{"resume_policy":"sparse_csum","target_rate_kbps":50000}'
|
4165
|
-
aoc packages send --
|
4166
|
-
aoc packages send --
|
4167
|
-
aoc packages send --
|
4168
|
-
aoc packages send
|
4169
|
-
aoc packages send
|
4170
|
-
aoc packages send
|
4171
|
-
aoc packages send
|
4434
|
+
aoc packages send --workspace="my_aoc_shbx_ws" @json:'{"name":"Important files delivery","recipients":["my_aoc_shbx_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"]}]}' testfile.bin
|
4435
|
+
aoc packages send --workspace="my_aoc_shbx_ws" @json:'{"name":"Important files delivery","recipients":["my_aoc_shbx_name"],"metadata":{"Project Id":"456","Type":"Opt2","CheckThose":["Check1","Check2"],"Optional Date":"2021-01-13T15:02:00.000Z"}}' testfile.bin
|
4436
|
+
aoc packages send --workspace="my_aoc_shbx_ws" @json:'{"name":"Important files delivery","recipients":["my_aoc_shbx_name"]}' testfile.bin
|
4437
|
+
aoc packages send @json:'{"name":"Important files delivery","recipients":["my_email_external_user"]}' --new-user-option=@json:'{"package_contact":true}' testfile.bin
|
4438
|
+
aoc packages send @json:'{"name":"Important files delivery","recipients":["my_email_internal_user"],"note":"my note"}' testfile.bin
|
4439
|
+
aoc packages send @json:'{"name":"Important files delivery"}' testfile.bin --link=my_aoc_publink_send_aoc_user --password=my_aoc_publink_send_use_pass
|
4440
|
+
aoc packages send @json:'{"name":"Important files delivery"}' testfile.bin --link=my_aoc_publink_send_shd_inbox
|
4172
4441
|
aoc packages shared_inboxes list
|
4173
4442
|
aoc remind --username=my_aoc_user_email
|
4174
4443
|
aoc servers
|
@@ -4295,7 +4564,7 @@ ascli ats access_key create --cloud=azure --region=eastus --params=@json:'{"id":
|
|
4295
4564
|
delete all my access keys:
|
4296
4565
|
|
4297
4566
|
```bash
|
4298
|
-
|
4567
|
+
ascli ats access_key list --field=id --format=csv | ascli ats access_key delete @lines:@stdin: --bulk=yes
|
4299
4568
|
```
|
4300
4569
|
|
4301
4570
|
The parameters provided to ATS for access key creation are the ones of [ATS API](https://developer.ibm.com/apis/catalog?search=%22aspera%20ats%22) for the `POST /access_keys` endpoint.
|
@@ -4384,7 +4653,7 @@ ascli server --url=ssh://_server_address_:33001 ... --ts=@json:'{"token":"Basic
|
|
4384
4653
|
|
4385
4654
|
> **Note:** If you need to use the Aspera public keys, then specify an empty token: `--ts=@json:'{"token":""}'` : Aspera public SSH keys will be used, but the protocol will ignore the empty token.
|
4386
4655
|
|
4387
|
-
The value of the `ssh_keys` option can be a single value or an
|
4656
|
+
The value of the `ssh_keys` option can be a single value or an `Array`.
|
4388
4657
|
Each value is a **path** to a private key and is expanded (`~` is replaced with the user's home folder).
|
4389
4658
|
|
4390
4659
|
Examples:
|
@@ -4433,6 +4702,9 @@ ascli server --ssh-options=@json:'{"use_agent": false}' ...
|
|
4433
4702
|
|
4434
4703
|
> **Note:** This can also be set using a preset.
|
4435
4704
|
|
4705
|
+
If one of the SSH private keys is passphrase-protected, then option `passphrase` can be used.
|
4706
|
+
It is equivalent to setting both options `ssh_options.passphrase` and `ts.ssh_private_key_passphrase`.
|
4707
|
+
|
4436
4708
|
### Other session channels for `server`
|
4437
4709
|
|
4438
4710
|
URL schemes `local` and `https` are also supported (mainly for testing purpose).
|
@@ -4455,6 +4727,12 @@ ascli server download /aspera-test-dir-large/200MB
|
|
4455
4727
|
|
4456
4728
|
`initdemo` creates a [option preset](#lprt) `demoserver` and set it as default for plugin `server`.
|
4457
4729
|
|
4730
|
+
If an SSH private key is used for authentication with a passphrase, the passphrase needs to be provided to both options: `ssh_options`, for browsing, and `ts` for transfers:
|
4731
|
+
|
4732
|
+
```bash
|
4733
|
+
ascli server --url=ssh://_server_address_here_:33001 --username=_user_here_ --ssh_keys=_private_key_path_here_ --passphrase=_passphrase_here_
|
4734
|
+
```
|
4735
|
+
|
4458
4736
|
## <a id="node"></a>Plugin: `node`: IBM Aspera High Speed Transfer Server Node
|
4459
4737
|
|
4460
4738
|
This plugin gives access to capabilities provided by HSTS node API.
|
@@ -4469,24 +4747,6 @@ It is possible to:
|
|
4469
4747
|
- transfer (upload / download)
|
4470
4748
|
- ...
|
4471
4749
|
|
4472
|
-
For transfers, it is possible to control how transfer is authorized using option: `token_type`:
|
4473
|
-
|
4474
|
-
- `aspera` : api `<upload|download>_setup` is called to create the transfer spec including the Aspera token, used as is.
|
4475
|
-
- `hybrid` : same as `aspera`, but token is replaced with basic token like `basic`
|
4476
|
-
- `basic` : transfer spec is created like this:
|
4477
|
-
|
4478
|
-
```json
|
4479
|
-
{
|
4480
|
-
"remote_host": "<address of node url>",
|
4481
|
-
"remote_user": "xfer",
|
4482
|
-
"ssh_port": 33001,
|
4483
|
-
"token": "Basic <base 64 encoded user/pass>",
|
4484
|
-
"direction": "[send|receive]"
|
4485
|
-
}
|
4486
|
-
```
|
4487
|
-
|
4488
|
-
> **Note:** the port is assumed to be the default Aspera SSH port `33001` and transfer user is assumed to be `xfer`.
|
4489
|
-
|
4490
4750
|
### Central
|
4491
4751
|
|
4492
4752
|
The central subcommand uses the "reliable query" API (session and file).
|
@@ -4571,43 +4831,48 @@ When node api is used with an **Access key**, extra information can be retrieved
|
|
4571
4831
|
> **Note:** Display of preview on terminal requires installation of extra gem: `rmagick`
|
4572
4832
|
|
4573
4833
|
```bash
|
4574
|
-
|
4834
|
+
dnf install -y ImageMagick-devel
|
4835
|
+
gem install rmagick rainbow
|
4575
4836
|
```
|
4576
4837
|
|
4577
4838
|
For example it is possible to display the preview of a file, if it exists, using:
|
4578
4839
|
|
4579
4840
|
```bash
|
4580
|
-
ascli aoc files
|
4841
|
+
ascli aoc files thumbnail /preview_samples/Aspera.mpg
|
4581
4842
|
```
|
4582
4843
|
|
4583
4844
|
Using direct node access and an access key , one can do:
|
4584
4845
|
|
4585
4846
|
```bash
|
4586
|
-
ascli node access_key do self
|
4847
|
+
ascli node access_key do self thumbnail /preview_samples/Aspera.mpg
|
4587
4848
|
```
|
4588
4849
|
|
4850
|
+
> **Note:** To specify the file by its file id, use the selector syntax: `%id:_file_id_here_`
|
4851
|
+
>
|
4852
|
+
> **Note:** To force textual display of the preview on iTerm, prefix command with: `env -u TERM_PROGRAM -u LC_TERMINAL`
|
4853
|
+
|
4589
4854
|
### Create access key
|
4590
4855
|
|
4591
4856
|
```bash
|
4592
|
-
ascli node access_key create
|
4857
|
+
ascli node access_key create @json:'{"id":"myaccesskey","secret":"my_secret_here","storage":{"type":"local","path":"/data/mydir"}}'
|
4593
4858
|
```
|
4594
4859
|
|
4595
4860
|
### Node sample commands
|
4596
4861
|
|
4597
4862
|
```bash
|
4598
|
-
node access_key create
|
4863
|
+
node access_key create @json:'{"id":"testingAK1","storage":{"type":"local","path":"/"}}'
|
4599
4864
|
node access_key delete testingAK1
|
4600
4865
|
node access_key do my_aoc_ak_name browse /
|
4601
4866
|
node access_key do my_aoc_ak_name delete /folder2
|
4602
4867
|
node access_key do my_aoc_ak_name delete testfile1
|
4603
4868
|
node access_key do my_aoc_ak_name download testfile1 --to-folder=.
|
4604
|
-
node access_key do my_aoc_ak_name file show --path=/testfile1
|
4605
|
-
node access_key do my_aoc_ak_name file show 1
|
4606
|
-
node access_key do my_aoc_ak_name file thumbnail --path=/testfile1
|
4607
4869
|
node access_key do my_aoc_ak_name find /
|
4608
4870
|
node access_key do my_aoc_ak_name mkdir /folder1
|
4609
4871
|
node access_key do my_aoc_ak_name node_info /
|
4610
4872
|
node access_key do my_aoc_ak_name rename /folder1 folder2
|
4873
|
+
node access_key do my_aoc_ak_name show %id:1
|
4874
|
+
node access_key do my_aoc_ak_name show /testfile1
|
4875
|
+
node access_key do my_aoc_ak_name thumbnail /testfile1
|
4611
4876
|
node access_key do my_aoc_ak_name upload 'faux:///testfile1?1k' --default_ports=no
|
4612
4877
|
node access_key list
|
4613
4878
|
node api_details
|
@@ -4624,7 +4889,6 @@ node delete @list:,folder_1/todelete,folder_1/tdlink,folder_1/delfile
|
|
4624
4889
|
node delete folder_1/10MB.2
|
4625
4890
|
node delete testfile.bin
|
4626
4891
|
node download testfile.bin --to-folder=.
|
4627
|
-
node download testfile.bin --to-folder=. --token-type=hybrid
|
4628
4892
|
node health
|
4629
4893
|
node info --fpac='function FindProxyForURL(url,host){return "DIRECT"}'
|
4630
4894
|
node license
|
@@ -4632,14 +4896,14 @@ node mkdir folder_1/todelete
|
|
4632
4896
|
node mkfile folder_1/delfile1 "hello world"
|
4633
4897
|
node mklink folder_1/todelete folder_1/tdlink
|
4634
4898
|
node rename folder_1 delfile1 delfile
|
4635
|
-
node search / --
|
4899
|
+
node search / --query=@json:'{"sort":"mtime"}'
|
4636
4900
|
node service create @json:'{"id":"service1","type":"WATCHD","run_as":{"user":"user1"}}'
|
4637
4901
|
node service delete service1
|
4638
4902
|
node service list
|
4639
4903
|
node space /
|
4640
4904
|
node ssync bandwidth my_syncid
|
4641
4905
|
node ssync counters my_syncid
|
4642
|
-
node ssync create
|
4906
|
+
node ssync create @json:'{"configuration":{"name":"sync1","local":{"path":"my_local_path"},"remote":{"host":"my_host","port":my_port,"user":"my_username","pass":"my_password","path":"my_remote_path"}}}'
|
4643
4907
|
node ssync delete my_syncid
|
4644
4908
|
node ssync files my_syncid
|
4645
4909
|
node ssync list
|
@@ -4652,11 +4916,10 @@ node sync ad st --sync-info=@json:'{"name":"syncv2","reset":true,"direction":"pu
|
|
4652
4916
|
node sync ad st --sync-info=@json:'{"sessions":[{"name":"syncv1","direction":"pull","local_dir":"my_local_sync_dir","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
|
4653
4917
|
node sync start --sync-info=@json:'{"name":"syncv2","reset":true,"direction":"pull","local":{"path":"my_local_sync_dir"},"remote":{"path":"/aspera-test-dir-tiny"}}'
|
4654
4918
|
node sync start --sync-info=@json:'{"sessions":[{"name":"syncv1","direction":"pull","local_dir":"my_local_sync_dir","remote_dir":"/aspera-test-dir-tiny","reset":true}]}'
|
4655
|
-
node transfer list --
|
4919
|
+
node transfer list --query=@json:'{"active_only":true}'
|
4656
4920
|
node upload --to-folder=folder_1 --sources=@ts --ts=@json:'{"paths":[{"source":"/aspera-test-dir-small/10MB.2"}],"precalculate_job_size":true}' --transfer=node --transfer-info=@json:'{"url":"my_node_url","username":"my_node_user","password":"my_node_pass_here"}'
|
4657
|
-
node upload --username=my_aoc_ak_name --password=my_aoc_ak_secret testfile.bin
|
4921
|
+
node upload --username=my_aoc_ak_name --password=my_aoc_ak_secret testfile.bin
|
4658
4922
|
node upload testfile.bin --to-folder=folder_1 --ts=@json:'{"target_rate_cap_kbps":10000}'
|
4659
|
-
node upload testfile.bin --to-folder=folder_1 --ts=@json:'{"target_rate_cap_kbps":10000}' --token-type=hybrid
|
4660
4923
|
```
|
4661
4924
|
|
4662
4925
|
## <a id="faspex5"></a>Plugin: `faspex5`: IBM Aspera Faspex v5
|
@@ -4665,22 +4928,37 @@ IBM Aspera's newer self-managed application.
|
|
4665
4928
|
|
4666
4929
|
3 authentication methods are supported:
|
4667
4930
|
|
4668
|
-
- jwt
|
4669
|
-
-
|
4670
|
-
-
|
4931
|
+
- jwt : general purpose, private-key based authentication
|
4932
|
+
- link : public link authentication
|
4933
|
+
- web : requires authentication with web browser
|
4934
|
+
- boot : use authentication token copied from browser (experimental)
|
4671
4935
|
|
4672
4936
|
### Faspex 5 JWT authentication
|
4673
4937
|
|
4674
|
-
This is the **recommended** method to use.
|
4938
|
+
This is the general purpose and **recommended** method to use.
|
4675
4939
|
|
4676
|
-
|
4940
|
+
Activation is in two steps:
|
4677
4941
|
|
4678
|
-
-
|
4679
|
-
|
4680
|
-
|
4681
|
-
|
4682
|
-
-
|
4683
|
-
-
|
4942
|
+
- The admninistrator must create an API client in Faspex with JWT support
|
4943
|
+
|
4944
|
+
This operation is generally done only once:
|
4945
|
+
|
4946
|
+
- As Admin, Navigate to the web UI: Admin → Configurations → API Clients → Create
|
4947
|
+
- Give a name, like `ascli`
|
4948
|
+
- Activate JWT
|
4949
|
+
- There is an option to set a general public key allowing the owner of the private key to impersonate any user. Unless you want to do this, leave this field empty.
|
4950
|
+
- Click on `Create` Button
|
4951
|
+
- Take note of Client Id (and Client Secret, but not used in current version)
|
4952
|
+
|
4953
|
+
- The user uses a private key and sets the public key in his faspex 5 profile
|
4954
|
+
|
4955
|
+
This operation is done by each user using the CLI.
|
4956
|
+
|
4957
|
+
- As user, click on the user logo, left to the app switcher on top right.
|
4958
|
+
- Select `Account Settings`
|
4959
|
+
- on the bottom in the text field: `Public key in PEM format` paste the **public** key corresponding to the private key used by the user.
|
4960
|
+
|
4961
|
+
**Note:** If you don't have any refer to section [Private Key](#private_key)
|
4684
4962
|
|
4685
4963
|
Then use these options:
|
4686
4964
|
|
@@ -4692,19 +4970,31 @@ Then use these options:
|
|
4692
4970
|
--private-key=@file:.../path/to/key.pem
|
4693
4971
|
```
|
4694
4972
|
|
4695
|
-
> **Note:** The `private_key` option must contain the PEM value of the private key which can be read from a file using the modifier: `@file:`, e.g. `@file:/path/to/key.pem`.
|
4973
|
+
> **Note:** The `private_key` option must contain the PEM **value** (not file path) of the private key which can be read from a file using the modifier: `@file:`, e.g. `@file:/path/to/key.pem`.
|
4974
|
+
|
4975
|
+
As usual, typically a user will create preset to avoid having to type these options each time.
|
4976
|
+
|
4977
|
+
Example:
|
4978
|
+
|
4979
|
+
```bash
|
4980
|
+
ascli conf preset update myf5 --auth=jwt --client-id=_client_id_here_ --client-secret=my_secret_here --username=_username_here_ --private-key=@file:.../path/to/key.pem
|
4981
|
+
|
4982
|
+
ascli conf preset set default faspx5 myf5
|
4983
|
+
|
4984
|
+
ascli faspex5 user profile show
|
4985
|
+
```
|
4696
4986
|
|
4697
4987
|
### Faspex 5 web authentication
|
4698
4988
|
|
4699
|
-
|
4989
|
+
The admninistrator must create an API client in Faspex for an external web app support:
|
4700
4990
|
|
4701
|
-
- Navigate to the web UI: Admin → Configurations → API Clients → Create
|
4991
|
+
- As Admin, Navigate to the web UI: Admin → Configurations → API Clients → Create
|
4702
4992
|
- Do not Activate JWT
|
4703
4993
|
- Set **Redirect URI** to `https://127.0.0.1:8888`
|
4704
|
-
- Click on Create Button
|
4994
|
+
- Click on `Create` Button
|
4705
4995
|
- Take note of Client Id (and Client Secret, but not used in current version)
|
4706
4996
|
|
4707
|
-
|
4997
|
+
The user will use the following options:
|
4708
4998
|
|
4709
4999
|
```text
|
4710
5000
|
--auth=web
|
@@ -4717,7 +5007,7 @@ Then use options:
|
|
4717
5007
|
|
4718
5008
|
For `boot` method: (will be removed in future)
|
4719
5009
|
|
4720
|
-
- Open a Web Browser
|
5010
|
+
- As user: Open a Web Browser
|
4721
5011
|
- Start developer mode
|
4722
5012
|
- Login to Faspex 5
|
4723
5013
|
- Find the first API call with `Authorization` header, and copy the value of the token (series of base64 values with dots)
|
@@ -4725,26 +5015,14 @@ For `boot` method: (will be removed in future)
|
|
4725
5015
|
Use this token as password and use `--auth=boot`.
|
4726
5016
|
|
4727
5017
|
```bash
|
4728
|
-
ascli conf
|
5018
|
+
ascli conf preset update f5boot --url=https://localhost/aspera/faspex --auth=boot --password=_token_here_
|
4729
5019
|
```
|
4730
5020
|
|
4731
|
-
### Faspex 5 packages
|
4732
|
-
|
4733
|
-
The `value` option provided to command `faspex5 package send` is the same as for the Faspex 5 API: `POST /packages`.
|
4734
|
-
|
4735
|
-
In addition, `ascli` adds some convenience: the field `recipients` is normally an Array of Hash, each with field `name` and optionally `recipient_type`, but it is also possible to provide an Array of String, with simply a recipient name.
|
4736
|
-
Then `ascli` will lookup existing contacts, and if a single match is found will use it, and set the `name` and `recipient_type` accordingly.
|
4737
|
-
|
4738
|
-
> **Note:** The lookup is case insensitive and on partial matches.
|
4739
|
-
|
4740
|
-
On reception, option `box` (default to `inbox`) can be set to the same values as API accepts, or to the name of a shared inbox.
|
4741
|
-
If the value `ALL` is provided to option `box`, then all packages are selected.
|
4742
|
-
|
4743
5021
|
### Faspex 5 sample commands
|
4744
5022
|
|
4745
5023
|
Most commands are directly REST API calls.
|
4746
|
-
Parameters to commands are carried through option `
|
4747
|
-
|
5024
|
+
Parameters to commands are carried through option `query`, as extended value, for `list`, or through positional parameter for creation.
|
5025
|
+
One can conveniently use the JSON format with prefix `@json:`.
|
4748
5026
|
|
4749
5027
|
> **Note:** The API is listed in [Faspex 5 API Reference](https://developer.ibm.com/apis/catalog?search="faspex+5") under **IBM Aspera Faspex API**.
|
4750
5028
|
|
@@ -4757,80 +5035,182 @@ faspex5 admin res node list
|
|
4757
5035
|
faspex5 admin res oauth_clients list
|
4758
5036
|
faspex5 admin res registrations list
|
4759
5037
|
faspex5 admin res saml_configs list
|
5038
|
+
faspex5 admin res shared_inboxes invite %name:'ascli shinbox' johnny@example.com
|
4760
5039
|
faspex5 admin res shared_inboxes list
|
5040
|
+
faspex5 admin res shared_inboxes members %name:'ascli shinbox' create %name:john@example.com
|
5041
|
+
faspex5 admin res shared_inboxes members %name:'ascli shinbox' delete %name:john@example.com
|
5042
|
+
faspex5 admin res shared_inboxes members %name:'ascli shinbox' delete %name:johnny@example.com
|
5043
|
+
faspex5 admin res shared_inboxes members %name:'ascli shinbox' list
|
4761
5044
|
faspex5 admin res workgroups list
|
4762
5045
|
faspex5 admin smtp show
|
4763
5046
|
faspex5 admin smtp test my_email_external
|
4764
5047
|
faspex5 bearer_token
|
4765
|
-
faspex5 gateway
|
5048
|
+
faspex5 gateway https://localhost:12345/aspera/faspex
|
4766
5049
|
faspex5 health
|
4767
|
-
faspex5 packages list --
|
5050
|
+
faspex5 packages list --box=my_faspex5_shinbox
|
5051
|
+
faspex5 packages list --box=my_faspex5_workgroup --group-type=workgroups
|
5052
|
+
faspex5 packages list --query=@json:'{"mailbox":"inbox","state":["released"]}'
|
4768
5053
|
faspex5 packages receive "my_package_id" --to-folder=. --ts=@json:'{"content_protection_password":"abc123_yo"}'
|
5054
|
+
faspex5 packages receive --box=my_faspex5_shinbox "my_package_id" --to-folder=.
|
5055
|
+
faspex5 packages receive --box=my_faspex5_workgroup --group-type=workgroups "my_package_id" --to-folder=.
|
4769
5056
|
faspex5 packages receive ALL --once-only=yes --to-folder=.
|
4770
5057
|
faspex5 packages receive INIT --once-only=yes
|
4771
|
-
faspex5 packages send
|
4772
|
-
faspex5 packages send
|
5058
|
+
faspex5 packages send @json:'{"title":"test title","recipients":["my_shinbox"],"metadata":{"Options":"Opt1","TextInput":"example text"}}' testfile.bin
|
5059
|
+
faspex5 packages send @json:'{"title":"test title","recipients":["my_workgroup"]}' testfile.bin
|
5060
|
+
faspex5 packages send @json:'{"title":"test title","recipients":[{"name":"my_f5_user"}]}' testfile.bin --ts=@json:'{"content_protection_password":"my_passphrase_here"}'
|
4773
5061
|
faspex5 packages show "my_package_id"
|
4774
|
-
faspex5
|
5062
|
+
faspex5 packages show --box=my_faspex5_shinbox "my_package_id"
|
5063
|
+
faspex5 packages show --box=my_faspex5_workgroup --group-type=workgroups "my_package_id"
|
5064
|
+
faspex5 postprocessing @json:'{"url":"https://localhost:8443/domain","processing":{"script_folder":"tests"},"certificate":{"key":"../local/k","cert":"../local/c","chain":"../local/ch"}}'
|
4775
5065
|
faspex5 user profile modify @json:'{"preference":{"connect_disabled":false}}'
|
4776
5066
|
faspex5 user profile show
|
4777
5067
|
```
|
4778
5068
|
|
4779
|
-
|
5069
|
+
### Faspex 5: inbox selection
|
5070
|
+
|
5071
|
+
By default, package operations (send, receive, list) are done on the user's inbox.
|
5072
|
+
|
5073
|
+
To select another inbox, use option `box` with one of the following values:
|
5074
|
+
|
5075
|
+
- inbox
|
5076
|
+
- inbox_history
|
5077
|
+
- inbox_all
|
5078
|
+
- inbox_all_history
|
5079
|
+
- outbox
|
5080
|
+
- outbox_history
|
5081
|
+
- pending
|
5082
|
+
- pending_history
|
5083
|
+
- all
|
5084
|
+
- ALL (only admin)
|
5085
|
+
- name of a shared inbox or workgroup
|
5086
|
+
|
5087
|
+
> **Note:** specify if the box is a shared inbox or a workgroup using option `group_type` with either `shared_inboxes` or `workgroups`
|
5088
|
+
|
5089
|
+
### Faspex 5: Send a package
|
5090
|
+
|
5091
|
+
The `Hash` creation parameter provided to command `faspex5 packages send` corresponds to the Faspex 5 API: `POST /packages`.
|
5092
|
+
|
5093
|
+
Required fields are `title` and `recipients`.
|
5094
|
+
Example using `@json:` format:
|
5095
|
+
|
5096
|
+
```json
|
5097
|
+
{"title":"some title","recipients":[{"recipient_type":"user","name":"user@example.com"}]}
|
5098
|
+
```
|
5099
|
+
|
5100
|
+
`recipient_type` is one of (Refer to API):
|
4780
5101
|
|
4781
|
-
-
|
5102
|
+
- user
|
5103
|
+
- workgroup
|
5104
|
+
- external_user
|
5105
|
+
- distribution_list
|
5106
|
+
- shared_inbox
|
4782
5107
|
|
4783
|
-
|
5108
|
+
`ascli` adds some convenience: The API expects the field `recipients` to be an `Array` of `Hash`, each with field `name` and optionally `recipient_type`.
|
5109
|
+
It is also possible to provide an `Array` of `String`, with simply a recipient name.
|
5110
|
+
Then `ascli` will lookup existing contacts among all possible types, use it if a single match is found, and set the `name` and `recipient_type` accordingly.
|
5111
|
+
Else an exception is sent.
|
4784
5112
|
|
4785
|
-
|
4786
|
-
|
4787
|
-
|
4788
|
-
|
4789
|
-
|
5113
|
+
> **Note:** The lookup is case insensitive and on partial matches.
|
5114
|
+
|
5115
|
+
```json
|
5116
|
+
{"title":"some title","recipients":["user@example.com"]}
|
5117
|
+
```
|
5118
|
+
|
5119
|
+
If the lookup needs to be only on certain types, you can specify the field: `recipient_types` with either a single value or an Array of values (from the list above). e.g. :
|
5120
|
+
|
5121
|
+
```json
|
5122
|
+
{"title":"test title","recipient_types":"user","recipients":["user1@example.com","user2@example.com"]}
|
5123
|
+
```
|
4790
5124
|
|
4791
|
-
|
5125
|
+
### Faspex 5: Send a package with metadata
|
4792
5126
|
|
4793
5127
|
The interface is the one of the API (Refer to API documentation, or look at request in browser):
|
4794
5128
|
|
4795
5129
|
```bash
|
4796
|
-
ascli faspex5
|
5130
|
+
ascli faspex5 packages send @json:'{"title":"test title","recipients":["my shared inbox"],"metadata":{"Confidential":"Yes","Drop menu":"Option 1"}}' 'faux:///test1?k1'
|
4797
5131
|
```
|
4798
5132
|
|
4799
5133
|
Basically, add the field `metadata`, with one key per metadata and the value is directly the metadata value.
|
4800
5134
|
|
4801
|
-
|
5135
|
+
### Faspex 5: Receive a package
|
5136
|
+
|
5137
|
+
The (numeric) identifier of the package t receive is given as argument to command `faspex5 packages receive`.
|
5138
|
+
|
5139
|
+
> **Note:** option `box` applies.
|
5140
|
+
|
5141
|
+
### Faspex 5: List packages
|
5142
|
+
|
5143
|
+
The following parameters in option `query` are supported:
|
5144
|
+
|
5145
|
+
- `q` : a filter on name (case insensitive, matches if value is contained in name)
|
5146
|
+
- `max` : maximum number of items to retrieve (stop pages when the maximum is passed)
|
5147
|
+
- `pmax` : maximum number of pages to request (stop pages when the maximum is passed)
|
5148
|
+
- `offset` : native api parameter, in general do not use (added by `ascli`)
|
5149
|
+
- `limit` : native api parameter, number of items par api call, in general do not use (added by `ascli`)
|
5150
|
+
|
5151
|
+
Admin only: If the value `ALL` is provided to option `box`, then all packages are selected.
|
5152
|
+
|
5153
|
+
### Faspex 5: List all shared inboxes
|
5154
|
+
|
5155
|
+
```bash
|
5156
|
+
ascli faspex5 admin res shared list --query=@json:'{"all":true}' --fields=id,name
|
5157
|
+
```
|
5158
|
+
|
5159
|
+
Shared inbox members can also be listed, added, removed, and external users can be invited to a shared inbox.
|
5160
|
+
|
5161
|
+
```bash
|
5162
|
+
ascli faspex5 admin res shared_inboxes invite '%name:ascli shinbox' john@example.com
|
5163
|
+
```
|
5164
|
+
|
5165
|
+
It is equivalent to:
|
4802
5166
|
|
4803
5167
|
```bash
|
4804
|
-
ascli faspex5 admin res
|
5168
|
+
ascli faspex5 admin res shared_inboxes invite '%name:ascli shinbox' @json:'{"email_address":"john@example.com"}'
|
5169
|
+
```
|
5170
|
+
|
5171
|
+
Other payload parameters are possible in Hash format:
|
5172
|
+
|
5173
|
+
```json
|
5174
|
+
{"description":"blah","prevent_http_upload":true,"custom_link_expiration_policy":false,"invitation_expires_after_upload":false,"set_invitation_link_expiration":false,"invitation_expiration_days":3
|
4805
5175
|
```
|
4806
5176
|
|
4807
|
-
|
5177
|
+
### Faspex 5: Create Metadata profile
|
4808
5178
|
|
4809
5179
|
```bash
|
4810
|
-
ascli faspex5 admin res metadata_profiles create
|
5180
|
+
ascli faspex5 admin res metadata_profiles create @json:'{"name":"the profile","default":false,"title":{"max_length":200,"illegal_chars":[]},"note":{"max_length":400,"illegal_chars":[],"enabled":false},"fields":[{"ordering":0,"name":"field1","type":"text_area","require":true,"illegal_chars":[],"max_length":100},{"ordering":1,"name":"fff2","type":"option_list","require":false,"choices":["opt1","opt2"]}]}'
|
4811
5181
|
```
|
4812
5182
|
|
4813
|
-
|
5183
|
+
### Faspex 5: Create a Shared inbox with specific metadata profile
|
4814
5184
|
|
4815
5185
|
```bash
|
4816
|
-
ascli faspex5 admin res shared create
|
5186
|
+
ascli faspex5 admin res shared create @json:'{"name":"the shared inbox","metadata_profile_id":1}'
|
4817
5187
|
```
|
4818
5188
|
|
4819
|
-
|
5189
|
+
### Faspex 5: List content in Shared folder and send package from remote source
|
4820
5190
|
|
4821
5191
|
```bash
|
4822
5192
|
ascli faspex5 shared_folders list
|
4823
5193
|
```
|
4824
5194
|
|
5195
|
+
```markdown
|
5196
|
+
+----+----------+---------+-----+
|
5197
|
+
| id | name | node_id | ... |
|
5198
|
+
+----+----------+---------+-----+
|
5199
|
+
| 3 | partages | 2 | ... |
|
5200
|
+
+----+----------+---------+-----+
|
5201
|
+
```
|
5202
|
+
|
4825
5203
|
```bash
|
4826
|
-
ascli faspex5 shared_folders br
|
5204
|
+
ascli faspex5 shared_folders br %name:partages /folder
|
4827
5205
|
```
|
4828
5206
|
|
4829
5207
|
```bash
|
4830
|
-
ascli faspex5
|
5208
|
+
ascli faspex5 packages send @json:'{"title":"hello","recipients":[{"name":"_recipient_here_"}]}' --shared-folder=%name:partages /folder/file
|
4831
5209
|
```
|
4832
5210
|
|
4833
|
-
|
5211
|
+
> **Note:** The shared folder can be identified by its numerical `id` or by name using percent selector: `%<field>:<value>`. e.g. `--shared-folder=3`
|
5212
|
+
|
5213
|
+
### Faspex 5: receive all packages (cargo)
|
4834
5214
|
|
4835
5215
|
To receive all packages, only once, through persistency of already received packages:
|
4836
5216
|
|
@@ -4844,7 +5224,7 @@ To initialize, and skip all current package so that next time `ALL` is used, onl
|
|
4844
5224
|
ascli faspex5 packages receive INIT --once-only=yes
|
4845
5225
|
```
|
4846
5226
|
|
4847
|
-
### Faspex 4-style postprocessing
|
5227
|
+
### Faspex 5: Faspex 4-style postprocessing
|
4848
5228
|
|
4849
5229
|
`ascli` provides command `postprocessing` in plugin `faspex5` to emulate Faspex 4 postprocessing.
|
4850
5230
|
It implements Faspex 5 web hooks, and calls a local script with the same environment as Faspex 4.
|
@@ -4852,7 +5232,7 @@ It implements Faspex 5 web hooks, and calls a local script with the same environ
|
|
4852
5232
|
It is invoked like this:
|
4853
5233
|
|
4854
5234
|
```bash
|
4855
|
-
ascli faspex5 postprocessing
|
5235
|
+
ascli faspex5 postprocessing @json:'{"url":"http://localhost:8080/processing"}'
|
4856
5236
|
```
|
4857
5237
|
|
4858
5238
|
The following parameters are supported:
|
@@ -4947,7 +5327,7 @@ The command is `package recv`, possible methods are:
|
|
4947
5327
|
- provide a `faspe:` URI with option `link`
|
4948
5328
|
|
4949
5329
|
```bash
|
4950
|
-
ascli faspex package recv
|
5330
|
+
ascli faspex package recv 12345
|
4951
5331
|
ascli faspex package recv --link=faspe://...
|
4952
5332
|
```
|
4953
5333
|
|
@@ -4996,9 +5376,9 @@ In this example the notification template is directly provided on command line.
|
|
4996
5376
|
Example:
|
4997
5377
|
|
4998
5378
|
```bash
|
4999
|
-
ascli faspex v4 dropbox create
|
5379
|
+
ascli faspex v4 dropbox create @json:'{"dropbox":{"e_wg_name":"test1","e_wg_desc":"test1"}}'
|
5000
5380
|
ascli faspex v4 dropbox list
|
5001
|
-
ascli faspex v4 dropbox delete
|
5381
|
+
ascli faspex v4 dropbox delete 36
|
5002
5382
|
```
|
5003
5383
|
|
5004
5384
|
### Remote sources
|
@@ -5036,7 +5416,7 @@ It is possible to tell `ascli` to download newly received packages, much like th
|
|
5036
5416
|
cargo client, or drive. Refer to the [same section](#aoccargo) in the Aspera on Cloud plugin:
|
5037
5417
|
|
5038
5418
|
```bash
|
5039
|
-
ascli faspex packages recv
|
5419
|
+
ascli faspex packages recv ALL --once-only=yes --lock-port=12345
|
5040
5420
|
```
|
5041
5421
|
|
5042
5422
|
### Faspex 4 sample commands
|
@@ -5086,20 +5466,20 @@ shares admin group list
|
|
5086
5466
|
shares admin node list
|
5087
5467
|
shares admin share list --fields=-status,status_message
|
5088
5468
|
shares admin share user_permissions 1 list
|
5089
|
-
shares admin user add --type=ldap
|
5090
|
-
shares admin user app_authorizations 1 modify
|
5469
|
+
shares admin user add --type=ldap the_name
|
5470
|
+
shares admin user app_authorizations 1 modify @json:'{"app_login":true}'
|
5091
5471
|
shares admin user app_authorizations 1 show
|
5092
|
-
shares admin user import --type=saml
|
5472
|
+
shares admin user import --type=saml @json:'{"id":"the_id","name_id":"the_name"}'
|
5093
5473
|
shares admin user list
|
5094
5474
|
shares admin user share_permissions 1 list
|
5095
5475
|
shares admin user share_permissions 1 show 1
|
5476
|
+
shares files browse /
|
5477
|
+
shares files delete my_shares_upload/testfile.bin
|
5478
|
+
shares files download --to-folder=. my_shares_upload/testfile.bin
|
5479
|
+
shares files download --to-folder=. my_shares_upload/testfile.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn/aspera/http-gwy"}'
|
5480
|
+
shares files upload --to-folder=my_shares_upload testfile.bin
|
5481
|
+
shares files upload --to-folder=my_shares_upload testfile.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn/aspera/http-gwy"}'
|
5096
5482
|
shares health
|
5097
|
-
shares repository browse /
|
5098
|
-
shares repository delete my_shares_upload/testfile.bin
|
5099
|
-
shares repository download --to-folder=. my_shares_upload/testfile.bin
|
5100
|
-
shares repository download --to-folder=. my_shares_upload/testfile.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn/aspera/http-gwy"}'
|
5101
|
-
shares repository upload --to-folder=my_shares_upload testfile.bin
|
5102
|
-
shares repository upload --to-folder=my_shares_upload testfile.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://my_http_gw_fqdn/aspera/http-gwy"}'
|
5103
5483
|
```
|
5104
5484
|
|
5105
5485
|
## <a id="console"></a>Plugin: `console`: IBM Aspera Console
|
@@ -5154,8 +5534,8 @@ If you have those parameters already, then following options shall be provided:
|
|
5154
5534
|
For example, let us create a default configuration:
|
5155
5535
|
|
5156
5536
|
```bash
|
5157
|
-
ascli conf
|
5158
|
-
ascli conf
|
5537
|
+
ascli conf preset update mycos --bucket=mybucket --endpoint=https://s3.us-east.cloud-object-storage.appdomain.cloud --apikey=abcdefgh --crn=crn:v1:bluemix:public:iam-identity::a/xxxxxxx
|
5538
|
+
ascli conf preset set default cos mycos
|
5159
5539
|
```
|
5160
5540
|
|
5161
5541
|
Then, jump to the transfer example.
|
@@ -5218,8 +5598,8 @@ The required options for this method are:
|
|
5218
5598
|
For example, let us create a default configuration:
|
5219
5599
|
|
5220
5600
|
```bash
|
5221
|
-
ascli conf
|
5222
|
-
ascli conf
|
5601
|
+
ascli conf preset update mycos --bucket=laurent --service-credentials=@val:@json:@file:~/service_creds.json --region=us-south
|
5602
|
+
ascli conf preset set default cos mycos
|
5223
5603
|
```
|
5224
5604
|
|
5225
5605
|
### Operations, transfers
|
@@ -5347,7 +5727,7 @@ ascli preview check
|
|
5347
5727
|
#### Image: ImageMagick and optipng
|
5348
5728
|
|
5349
5729
|
```bash
|
5350
|
-
|
5730
|
+
dnf install -y ImageMagick optipng
|
5351
5731
|
```
|
5352
5732
|
|
5353
5733
|
You may also install `ghostscript` which adds fonts to ImageMagick.
|
@@ -5481,12 +5861,12 @@ ascli preview scan --skip-folders=@json:'["/not_here"]'
|
|
5481
5861
|
|
5482
5862
|
The option `folder_reset_cache` forces the node service to refresh folder contents using various methods.
|
5483
5863
|
|
5484
|
-
When scanning the option `
|
5864
|
+
When scanning the option `query` has the same behavior as for the `node find` command.
|
5485
5865
|
|
5486
5866
|
For instance to filter out files beginning with `._` do:
|
5487
5867
|
|
5488
5868
|
```bash
|
5489
|
-
|
5869
|
+
--query='exec:!f["name"].start_with?("._") or f["name"].eql?(".DS_Store")'
|
5490
5870
|
```
|
5491
5871
|
|
5492
5872
|
### Preview File types
|
@@ -5547,10 +5927,10 @@ If the `mimemagic` gem complains about missing mime info file:
|
|
5547
5927
|
|
5548
5928
|
- Close the `cmd` and restart a new one if needed to get refreshed env vars
|
5549
5929
|
|
5550
|
-
- Linux
|
5930
|
+
- Linux RHEL 8+:
|
5551
5931
|
|
5552
5932
|
```bash
|
5553
|
-
|
5933
|
+
dnf install shared-mime-info
|
5554
5934
|
```
|
5555
5935
|
|
5556
5936
|
- macOS:
|
@@ -5597,8 +5977,9 @@ The `smtp` option is a hash table (extended value) with the following fields:
|
|
5597
5977
|
| field | default | example | description |
|
5598
5978
|
|--------------|---------------------|----------------------------|----------------------------------|
|
5599
5979
|
| `server` | - | smtp.gmail.com | SMTP server address |
|
5600
|
-
| `tls` | true |
|
5601
|
-
| `
|
5980
|
+
| `tls` | true | true | enable STARTTLS (port 587) |
|
5981
|
+
| `ssl` | false | false | enable TLS (port 465) |
|
5982
|
+
| `port` | 587 or 465 or 25 | 587 | port for service |
|
5602
5983
|
| `domain` | domain of server | gmail.com | email domain of user |
|
5603
5984
|
| `username` | - | john@example.com | user to authenticate on SMTP server, leave empty for open auth. |
|
5604
5985
|
| `password` | - | my_password_here | password for above username |
|
@@ -5812,7 +6193,7 @@ Interesting `ascp` features are found in its arguments: (see `ascp` manual):
|
|
5812
6193
|
- `ascp` has an option to send only files not modified since the last X seconds: `--exclude-newer-than`, `--exclude-older-than` (`exclude_newer_than`,`exclude_older_than`)
|
5813
6194
|
- `--src-base` (`src_base`) if top level folder name shall not be created on destination
|
5814
6195
|
|
5815
|
-
> **Note:** `ascli` takes transfer parameters exclusively as a [*transfer-spec*](#transferspec), with
|
6196
|
+
> **Note:** `ascli` takes transfer parameters exclusively as a [*transfer-spec*](#transferspec), with `ts` option.
|
5816
6197
|
>
|
5817
6198
|
> **Note:** Most, but not all, native `ascp` arguments are available as standard [*transfer-spec*](#transferspec) parameters.
|
5818
6199
|
>
|