aspera-cli 4.13.0 → 4.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
>
|