aspera-cli 4.24.1 → 4.25.0.pre
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 +1064 -745
- data/CONTRIBUTING.md +43 -100
- data/README.md +1281 -720
- data/bin/ascli +20 -1
- data/bin/asession +23 -27
- data/lib/aspera/agent/base.rb +10 -21
- data/lib/aspera/agent/connect.rb +2 -3
- data/lib/aspera/agent/desktop.rb +2 -2
- data/lib/aspera/agent/direct.rb +49 -32
- data/lib/aspera/agent/factory.rb +31 -0
- data/lib/aspera/api/aoc.rb +134 -76
- data/lib/aspera/api/cos_node.rb +3 -2
- data/lib/aspera/api/faspex.rb +213 -0
- data/lib/aspera/api/node.rb +107 -94
- data/lib/aspera/ascmd.rb +1 -2
- data/lib/aspera/ascp/installation.rb +73 -58
- data/lib/aspera/ascp/management.rb +119 -23
- data/lib/aspera/assert.rb +39 -11
- data/lib/aspera/cli/error.rb +4 -2
- data/lib/aspera/cli/extended_value.rb +91 -67
- data/lib/aspera/cli/formatter.rb +62 -27
- data/lib/aspera/cli/hints.rb +8 -0
- data/lib/aspera/cli/info.rb +4 -4
- data/lib/aspera/cli/main.rb +76 -84
- data/lib/aspera/cli/manager.rb +352 -248
- data/lib/aspera/cli/plugins/alee.rb +5 -4
- data/lib/aspera/cli/plugins/aoc.rb +175 -195
- data/lib/aspera/cli/plugins/ats.rb +4 -4
- data/lib/aspera/cli/plugins/base.rb +343 -0
- data/lib/aspera/cli/plugins/basic_auth.rb +45 -0
- data/lib/aspera/cli/plugins/config.rb +283 -269
- data/lib/aspera/cli/plugins/console.rb +27 -22
- data/lib/aspera/cli/plugins/cos.rb +3 -3
- data/lib/aspera/cli/plugins/factory.rb +78 -0
- data/lib/aspera/cli/plugins/faspex.rb +49 -46
- data/lib/aspera/cli/plugins/faspex5.rb +113 -225
- data/lib/aspera/cli/plugins/faspio.rb +19 -18
- data/lib/aspera/cli/plugins/httpgw.rb +14 -13
- data/lib/aspera/cli/plugins/node.rb +162 -149
- data/lib/aspera/cli/plugins/oauth.rb +48 -0
- data/lib/aspera/cli/plugins/orchestrator.rb +129 -45
- data/lib/aspera/cli/plugins/preview.rb +30 -50
- data/lib/aspera/cli/plugins/server.rb +21 -21
- data/lib/aspera/cli/plugins/shares.rb +45 -47
- data/lib/aspera/cli/sync_actions.rb +50 -39
- data/lib/aspera/cli/transfer_agent.rb +35 -49
- data/lib/aspera/cli/transfer_progress.rb +6 -6
- data/lib/aspera/cli/version.rb +3 -3
- data/lib/aspera/cli/wizard.rb +70 -55
- data/lib/aspera/colors.rb +6 -0
- data/lib/aspera/command_line_builder.rb +59 -61
- data/lib/aspera/command_line_converter.rb +2 -1
- data/lib/aspera/coverage.rb +2 -2
- data/lib/aspera/data_repository.rb +1 -1
- data/lib/aspera/environment.rb +51 -41
- data/lib/aspera/faspex_gw.rb +7 -5
- data/lib/aspera/faspex_postproc.rb +1 -1
- data/lib/aspera/keychain/factory.rb +1 -2
- data/lib/aspera/keychain/macos_security.rb +1 -1
- data/lib/aspera/log.rb +37 -9
- data/lib/aspera/markdown.rb +31 -0
- data/lib/aspera/nagios.rb +7 -6
- data/lib/aspera/oauth/base.rb +25 -28
- data/lib/aspera/oauth/factory.rb +9 -9
- data/lib/aspera/oauth/url_json.rb +2 -1
- data/lib/aspera/oauth/web.rb +2 -2
- data/lib/aspera/preview/file_types.rb +23 -37
- data/lib/aspera/products/connect.rb +7 -6
- data/lib/aspera/products/desktop.rb +1 -4
- data/lib/aspera/products/other.rb +9 -1
- data/lib/aspera/products/transferd.rb +0 -1
- data/lib/aspera/rest.rb +168 -113
- data/lib/aspera/rest_error_analyzer.rb +4 -4
- data/lib/aspera/ssh.rb +7 -4
- data/lib/aspera/ssl.rb +41 -0
- data/lib/aspera/sync/args.schema.yaml +46 -3
- data/lib/aspera/sync/conf.schema.yaml +307 -123
- data/lib/aspera/sync/database.rb +2 -1
- data/lib/aspera/sync/operations.rb +135 -79
- data/lib/aspera/temp_file_manager.rb +17 -5
- data/lib/aspera/transfer/error.rb +16 -7
- data/lib/aspera/transfer/parameters.rb +35 -22
- data/lib/aspera/transfer/resumer.rb +74 -0
- data/lib/aspera/transfer/spec.rb +5 -5
- data/lib/aspera/transfer/spec.schema.yaml +170 -59
- data/lib/aspera/transfer/spec_doc.rb +49 -43
- data/lib/aspera/uri_reader.rb +2 -2
- data/lib/aspera/web_auth.rb +6 -6
- data/lib/transferd_pb.rb +2 -2
- data.tar.gz.sig +0 -0
- metadata +26 -11
- metadata.gz.sig +0 -0
- data/lib/aspera/cli/basic_auth_plugin.rb +0 -43
- data/lib/aspera/cli/plugin.rb +0 -333
- data/lib/aspera/cli/plugin_factory.rb +0 -81
- data/lib/aspera/resumer.rb +0 -77
- data/lib/aspera/transfer/error_info.rb +0 -91
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<!--
|
|
3
3
|
DO NOT EDIT: THIS FILE IS GENERATED, edit docs/README.erb.md, for details, read docs/README.md
|
|
4
4
|
PANDOC_META_BEGIN
|
|
5
|
-
subtitle: "ascli 4.
|
|
5
|
+
subtitle: "ascli 4.25.0.pre"
|
|
6
6
|
author: "Laurent MARTIN"
|
|
7
7
|
PANDOC_META_END
|
|
8
8
|
-->
|
|
@@ -10,26 +10,27 @@ PANDOC_META_END
|
|
|
10
10
|
|
|
11
11
|
<!-- NOTE CAUTION WARNING IMPORTANT TIP INFO -->
|
|
12
12
|
|
|
13
|
+
<!-- markdownlint-disable MD028 -->
|
|
14
|
+
|
|
13
15
|
[](https://badge.fury.io/rb/aspera-cli)
|
|
14
16
|
[](https://github.com/IBM/aspera-cli/actions)
|
|
15
17
|
[](https://bestpractices.coreinfrastructure.org/projects/5861)
|
|
16
18
|
|
|
17
19
|
## Introduction
|
|
18
20
|
|
|
19
|
-

|
|
20
22
|
|
|
21
23
|
Hootput lives in the terminal, watching over every command with wide, unblinking eyes.
|
|
22
24
|
Known for concise output and sharp insight, this owl thrives where others get lost in the dark.
|
|
23
25
|
It doesn’t chatter; it hoots—clear, precise, and always on time.
|
|
24
26
|
|
|
25
|
-
Like ascli
|
|
27
|
+
Like `ascli`, Hootput is built for action: launching transfers, parsing options, and navigating APIs without hesitation.
|
|
26
28
|
Light on feathers but heavy on wisdom, it turns complexity into simple one-liners.
|
|
27
29
|
When you hear Hootput’s call, you know your data is already in flight.
|
|
28
30
|
|
|
29
31
|
---
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
"Hey, I’m ascli — your data’s personal courier.
|
|
33
|
+
"Hey, I’m `ascli` — your data’s personal courier.
|
|
33
34
|
I don’t do flashy dashboards; I’m happiest in a terminal window.
|
|
34
35
|
Hand me a command, and I’ll zip your files across the network faster than you thought possible.
|
|
35
36
|
|
|
@@ -41,9 +42,9 @@ Need to debug? I’ll show you what’s going on under the hood.
|
|
|
41
42
|
|
|
42
43
|
Think of me as Aspera’s command-line sidekick: quick, reliable, and a little no-nonsense. You bring the files; I’ll bring the horsepower."
|
|
43
44
|
|
|
44
|
-
Version : 4.
|
|
45
|
+
Version : 4.25.0.pre
|
|
45
46
|
|
|
46
|
-
Laurent/2016-
|
|
47
|
+
Laurent/2016-2026
|
|
47
48
|
|
|
48
49
|
The aspera-cli Ruby gem offers a powerful command-line interface (CLI, `ascli`) for IBM Aspera software, facilitating seamless interaction with Aspera APIs and enabling high-performance file transfers.
|
|
49
50
|
It also serves as an excellent resource for developers seeking to explore and understand the Aspera API ecosystem.
|
|
@@ -62,7 +63,7 @@ Minimum required Ruby version: >= 3.1.
|
|
|
62
63
|
|
|
63
64
|
Release notes: see [CHANGELOG.md](CHANGELOG.md)
|
|
64
65
|
|
|
65
|
-
A PDF version of this documentation is
|
|
66
|
+
A PDF version of this documentation is delivered with [releases](https://github.com/IBM/aspera-cli/releases).
|
|
66
67
|
|
|
67
68
|
### BUGS, FEATURES, CONTRIBUTION
|
|
68
69
|
|
|
@@ -105,9 +106,10 @@ While `ascp` can be used directly, it is limited to basic send/receive operation
|
|
|
105
106
|
|
|
106
107
|
### Notations, Shell, Examples
|
|
107
108
|
|
|
108
|
-
Command line operations examples are shown using a shell such as: `bash` or `zsh
|
|
109
|
+
Command line operations examples are shown using a shell such as: `bash` (Linux) or `zsh` (macOS).
|
|
110
|
+
Using [Windows PowerShell or cmd](#shell-parsing-for-windows) is also possible.
|
|
109
111
|
|
|
110
|
-
Command line arguments beginning with `my_` in examples, e.g. `my_param_value`, are user-provided value and not fixed value commands.
|
|
112
|
+
Command line arguments beginning with `my_` in examples, e.g. `my_param_value`, are user-provided value, and not fixed value commands.
|
|
111
113
|
|
|
112
114
|
`ascli` is an API **Client** toward the remote Aspera application **Server** (Faspex, HSTS, etc...)
|
|
113
115
|
|
|
@@ -116,7 +118,7 @@ The transfer is not directly implemented in `ascli`, rather `ascli` uses one of
|
|
|
116
118
|
|
|
117
119
|
> [!NOTE]
|
|
118
120
|
> A **[Transfer Agent](#transfer-clients-agents)** is a client for the remote Transfer Server (HSTS/HSTE).
|
|
119
|
-
> It can be local or remote.
|
|
121
|
+
> It can be local, or remote.
|
|
120
122
|
> For example a remote Aspera Transfer Server may be used as a transfer agent (using Node API).
|
|
121
123
|
> i.e. using option `--transfer=node`
|
|
122
124
|
|
|
@@ -133,7 +135,7 @@ ascli --version
|
|
|
133
135
|
```
|
|
134
136
|
|
|
135
137
|
```text
|
|
136
|
-
4.
|
|
138
|
+
4.25.0.pre
|
|
137
139
|
```
|
|
138
140
|
|
|
139
141
|
> [!NOTE]
|
|
@@ -143,7 +145,7 @@ ascli --version
|
|
|
143
145
|
|
|
144
146
|
Once installation is completed, you can proceed to the first use with a demo server:
|
|
145
147
|
|
|
146
|
-
If you want to test with Aspera on Cloud, jump to section: [Wizard](#
|
|
148
|
+
If you want to test with Aspera on Cloud, jump to section: [Wizard](#wizard).
|
|
147
149
|
|
|
148
150
|
To test with Aspera demo transfer server, set up the environment and then test:
|
|
149
151
|
|
|
@@ -246,16 +248,31 @@ If you don't have internet for the installation, refer to section [Installation
|
|
|
246
248
|
|
|
247
249
|
### Single file executable
|
|
248
250
|
|
|
249
|
-
It is planned to provide `ascli` as a single platform-dependent executable.
|
|
250
|
-
[Beta releases can be found here](https://ibm.biz/aspera-cli-exe).
|
|
251
|
-
|
|
252
251
|
> [!CAUTION]
|
|
253
252
|
> This is a Beta feature.
|
|
254
|
-
|
|
253
|
+
|
|
254
|
+
`ascli` is available as a single **platform-dependent executable**.
|
|
255
|
+
[Beta releases can be found here](https://ibm.biz/aspera-cli-exe).
|
|
256
|
+
|
|
257
|
+
Installation:
|
|
258
|
+
|
|
259
|
+
```shell
|
|
260
|
+
curl -o ascli https://eudemo.asperademo.com/download/aspera-cli/ascli.4.24.1.osx-arm64
|
|
261
|
+
chmod a+x ascli
|
|
262
|
+
./ascli conf transferd install
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
> [!NOTE]
|
|
266
|
+
> Replace the URL with the one for your platform.
|
|
255
267
|
> Installation of `ascp` is still required separately.
|
|
256
268
|
> Refer to [Install `ascp`](#installation-of-ascp-through-transferd).
|
|
257
|
-
|
|
258
|
-
|
|
269
|
+
|
|
270
|
+
#### Linux: GLIBC version
|
|
271
|
+
|
|
272
|
+
> [!CAUTION]
|
|
273
|
+
> On Linux, the executable requires a minimum GLIBC version, specified in the executable name on download site.
|
|
274
|
+
|
|
275
|
+
On Linux, check your system's GLIBC version on this site: [repology.org](https://repology.org/project/glibc/versions), or check your GLIBC version with `ldd`:
|
|
259
276
|
|
|
260
277
|
```shell
|
|
261
278
|
ldd --version | head -n1
|
|
@@ -293,13 +310,13 @@ Required Ruby version: >= 3.1.
|
|
|
293
310
|
|
|
294
311
|
**In priority**, refer to the official Ruby documentation:
|
|
295
312
|
|
|
296
|
-
- [
|
|
297
|
-
- [Installation Guide](https://www.ruby-lang.org/en/documentation/installation/)
|
|
313
|
+
- [Official Ruby Download](https://www.ruby-lang.org/en/downloads/)
|
|
314
|
+
- [Official Ruby Installation Guide](https://www.ruby-lang.org/en/documentation/installation/)
|
|
298
315
|
|
|
299
316
|
For convenience, you may refer to the following sections for a proposed method for specific operating systems.
|
|
300
317
|
|
|
301
318
|
Latest version of `ascli` requires a Ruby version [at least under maintenance support](https://www.ruby-lang.org/en/downloads/branches/).
|
|
302
|
-
If only an older Ruby version
|
|
319
|
+
If only an older Ruby version must be used due to system constraints, then use an older version of `ascli` that supports it.
|
|
303
320
|
|
|
304
321
|
#### Windows: Installer
|
|
305
322
|
|
|
@@ -321,46 +338,46 @@ Download the Ruby installer executable from <https://rubyinstaller.org/downloads
|
|
|
321
338
|
rubyinstaller-devkit-3.2.2-1-x64.exe /silent /currentuser /noicons /dir=C:\aspera-cli
|
|
322
339
|
```
|
|
323
340
|
|
|
324
|
-
####
|
|
341
|
+
#### Windows: Chocolatey
|
|
342
|
+
|
|
343
|
+
If you use [Chocolatey](https://chocolatey.org/), then install Ruby with:
|
|
344
|
+
|
|
345
|
+
```powershell
|
|
346
|
+
choco install ruby
|
|
347
|
+
```
|
|
325
348
|
|
|
326
|
-
|
|
327
|
-
It is an old unsupported version and [Apple has deprecated it](https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes).
|
|
328
|
-
It will be removed from macOS in the future.
|
|
329
|
-
Do not use it.
|
|
349
|
+
#### macOS: `brew`
|
|
330
350
|
|
|
331
|
-
|
|
351
|
+
If you use [Homebrew](https://brew.sh/), then install Ruby with:
|
|
332
352
|
|
|
333
353
|
```shell
|
|
334
354
|
brew install ruby
|
|
335
355
|
```
|
|
336
356
|
|
|
357
|
+
> [!NOTE]
|
|
358
|
+
> This is the recommended method.
|
|
359
|
+
|
|
360
|
+
> [!WARNING]
|
|
361
|
+
> **macOS** comes with Ruby 2.6.
|
|
362
|
+
> It is an old unsupported version and [Apple has deprecated it](https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes).
|
|
363
|
+
> It will be removed from macOS in the future.
|
|
364
|
+
> Do not use it.
|
|
365
|
+
> Use the required version of Ruby.
|
|
366
|
+
|
|
337
367
|
This installs a recent Ruby suitable for `ascli`.
|
|
338
368
|
|
|
339
|
-
To add PATH to Ruby on Apple Silicon, add
|
|
340
|
-
|
|
341
|
-
```shell
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
case $version in list) for r in $(brew list -1 | grep '^ruby'); do
|
|
345
|
-
echo "$(brew info --json=v1 $r | jq -r '.[0].installed[0].version') : use_ruby $r"
|
|
346
|
-
done|gsort -k1,1V;return;;; esac
|
|
347
|
-
local prefix=$(brew --prefix ruby${version:+@}$version)
|
|
348
|
-
if ! test -d "$prefix";then
|
|
349
|
-
echo "No such ruby version: $version"
|
|
350
|
-
brew list|grep ruby
|
|
351
|
-
return 1
|
|
352
|
-
fi
|
|
353
|
-
PATH="$prefix/bin:$(echo "$PATH" | tr ':' '\n' | grep -v '/ruby' | paste -sd ':' -)"
|
|
354
|
-
PATH="$(gem env gemdir)/bin:$PATH"
|
|
355
|
-
export LDFLAGS="-L$prefix/lib"
|
|
356
|
-
export CPPFLAGS="-I$prefix/include"
|
|
357
|
-
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"
|
|
358
|
-
echo "Using: $prefix"
|
|
359
|
-
ruby -v
|
|
360
|
-
}
|
|
361
|
-
use_ruby
|
|
369
|
+
To add PATH to Ruby on Apple Silicon, add the following lines to your shell configuration file (i.e. `~/.zshrc` if you are using `zsh`, or `~/.bash_profile` for `bash`):
|
|
370
|
+
|
|
371
|
+
```shell
|
|
372
|
+
export PATH="$(brew --prefix ruby)/bin:$PATH"
|
|
373
|
+
export PATH="$(gem env gemdir)/bin:$PATH"
|
|
362
374
|
```
|
|
363
375
|
|
|
376
|
+
> [!NOTE]
|
|
377
|
+
> Two separate lines are needed because the second one depends on the first one.
|
|
378
|
+
> This is what is displayed at the end of the installation of the ruby tap,
|
|
379
|
+
> same as message from: `brew info ruby`
|
|
380
|
+
|
|
364
381
|
#### Linux: Package
|
|
365
382
|
|
|
366
383
|
If your Linux distribution provides a standard Ruby package, you can use it provided that the version supported.
|
|
@@ -385,10 +402,11 @@ If your Linux distribution provides a standard Ruby package, you can use it prov
|
|
|
385
402
|
dnf install -y make automake gcc gcc-c++ kernel-devel
|
|
386
403
|
```
|
|
387
404
|
|
|
388
|
-
- Enable the Ruby version you
|
|
405
|
+
- Enable the Ruby version you selected:
|
|
389
406
|
|
|
390
407
|
```shell
|
|
391
|
-
dnf module -y enable ruby:3.
|
|
408
|
+
dnf module -y enable ruby:3.2
|
|
409
|
+
|
|
392
410
|
dnf install -y ruby-devel
|
|
393
411
|
```
|
|
394
412
|
|
|
@@ -411,7 +429,7 @@ apt install -y ruby ruby-dev rubygems ruby-json
|
|
|
411
429
|
One can remove all installed gems, for example to start fresh:
|
|
412
430
|
|
|
413
431
|
```shell
|
|
414
|
-
|
|
432
|
+
ls $(gem env gemdir)/gems/|sed -e 's/-[^-]*$//'|sort -u|xargs gem uninstall -axI
|
|
415
433
|
```
|
|
416
434
|
|
|
417
435
|
#### Unix-like: RVM: Single user installation (not root)
|
|
@@ -569,27 +587,33 @@ Those are not installed as part of dependencies because they involve compilation
|
|
|
569
587
|
See [Gemfile](Gemfile):
|
|
570
588
|
|
|
571
589
|
| name | version | comment |
|
|
572
|
-
|
|
590
|
+
|----------------------|---------|-----------------------------------------------------|
|
|
573
591
|
| grpc | ~> 1.71 | (no jruby) for Aspera Transfer Daemon |
|
|
574
|
-
|
|
|
592
|
+
| marcel | ~> 1.1 | for preview |
|
|
575
593
|
| rmagick | ~> 6.1 | (no jruby) for terminal view |
|
|
576
594
|
| symmetric-encryption | ~> 4.6 | for encrypted hash file secrets |
|
|
577
595
|
| bigdecimal | ~> 3.1 | if RUBY_VERSION >= '3.4' for symmetric-encryption ? |
|
|
578
596
|
| sqlite3 | ~> 2.7 | (no jruby) for async DB |
|
|
579
597
|
| jdbc-sqlite3 | ~> 3.46 | (jruby) for async DB |
|
|
580
598
|
| sequel | ~> 5.96 | (jruby) for async DB |
|
|
599
|
+
| ed25519 | ~> 1.4 | (no jruby) for ed25519 and OpenSSH file format |
|
|
600
|
+
| bcrypt_pbkdf | ~> 1.1 | (no jruby) for ed25519 and OpenSSH file format |
|
|
601
|
+
| syslog | ~> 0.3 | (no jruby) for logger=syslog |
|
|
581
602
|
|
|
582
603
|
Install like this:
|
|
583
604
|
|
|
584
605
|
```shell
|
|
585
606
|
gem install grpc -v '~> 1.71'
|
|
586
|
-
gem install
|
|
607
|
+
gem install marcel -v '~> 1.1'
|
|
587
608
|
gem install rmagick -v '~> 6.1'
|
|
588
609
|
gem install symmetric-encryption -v '~> 4.6'
|
|
589
610
|
gem install bigdecimal -v '~> 3.1'
|
|
590
611
|
gem install sqlite3 -v '~> 2.7'
|
|
591
612
|
gem install jdbc-sqlite3 -v '~> 3.46'
|
|
592
613
|
gem install sequel -v '~> 5.96'
|
|
614
|
+
gem install ed25519 -v '~> 1.4'
|
|
615
|
+
gem install bcrypt_pbkdf -v '~> 1.1'
|
|
616
|
+
gem install syslog -v '~> 0.3'
|
|
593
617
|
```
|
|
594
618
|
|
|
595
619
|
### Ruby Gem: `aspera-cli`
|
|
@@ -597,7 +621,7 @@ gem install sequel -v '~> 5.96'
|
|
|
597
621
|
Once you have Ruby and rights to install gems, install the `aspera-cli` gem and its dependencies:
|
|
598
622
|
|
|
599
623
|
```shell
|
|
600
|
-
gem install aspera-cli
|
|
624
|
+
gem install aspera-cli --pre
|
|
601
625
|
```
|
|
602
626
|
|
|
603
627
|
To upgrade to the latest version:
|
|
@@ -634,20 +658,35 @@ The user installs the gem with `HighSecurity` or `MediumSecurity`: this will suc
|
|
|
634
658
|
gem install -P MediumSecurity aspera-cli
|
|
635
659
|
```
|
|
636
660
|
|
|
661
|
+
#### Beta release of gem
|
|
662
|
+
|
|
663
|
+
Beta version of gem can be found here: <https://ibm.biz/aspera-cli-beta>
|
|
664
|
+
|
|
665
|
+
On Linux/macOS, install in a terminal:
|
|
666
|
+
|
|
667
|
+
```shell
|
|
668
|
+
curl -sLo aspera-cli-beta.gem https://ibm.biz/aspera-cli-beta
|
|
669
|
+
gem install aspera-cli-beta.gem
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
On Windows, download the link, that saves the file: `aspera-cli-beta.gem`, then install with `gem install aspera-cli-beta.gem`.
|
|
673
|
+
|
|
637
674
|
### FASP Protocol: `ascp`
|
|
638
675
|
|
|
639
|
-
|
|
640
|
-
Only two additional files are required to perform an Aspera Transfer, which are part of Aspera Transfer Daemon:
|
|
676
|
+
File transfers are primarily performed using the **FASP** protocol via the `ascp` utility.
|
|
641
677
|
|
|
642
|
-
|
|
643
|
-
|
|
678
|
+
To execute an Aspera transfer, only two additional files are required, both included with the Aspera Transfer Daemon:
|
|
679
|
+
|
|
680
|
+
- `ascp` - the transfer executable
|
|
644
681
|
|
|
645
|
-
|
|
682
|
+
- `aspera-license` - the license file (located in the same directory as `ascp` or in `../etc`)
|
|
683
|
+
|
|
684
|
+
These components can be installed either by installing the Aspera transfer software or by running the `ascli` command.
|
|
646
685
|
|
|
647
686
|
#### Installation of `ascp` through `transferd`
|
|
648
687
|
|
|
649
688
|
The easiest option to install `ascp` is through the use of the IBM Aspera Transfer Daemon (`transferd`).
|
|
650
|
-
Install using `ascli` for the current platform with:
|
|
689
|
+
Install it using `ascli` (for the current platform) with:
|
|
651
690
|
|
|
652
691
|
```shell
|
|
653
692
|
ascli config transferd install
|
|
@@ -671,8 +710,8 @@ The installation of the transfer binaries follows those steps:
|
|
|
671
710
|
- By default, the archive is extracted to `$HOME/.aspera/sdk`.
|
|
672
711
|
- The destination folder can be changed by setting the `sdk_folder` option.
|
|
673
712
|
|
|
674
|
-
| Option | Default | Description
|
|
675
|
-
|
|
713
|
+
| Option | Default | Description |
|
|
714
|
+
|-----------------|---------|--------------------------------------------------------|
|
|
676
715
|
| `sdk_url` | `DEF` | URL to download the Aspera Transfer Daemon archive.<br/>`DEF` means: select from available archives. |
|
|
677
716
|
| `locations_url` | `https://ibm.biz/sdk_location` | URL to get download URLs of Aspera Transfer Daemon from IBM official repository. |
|
|
678
717
|
| `sdk_folder` | `$HOME/.aspera/sdk` | Folder where the SDK archive is extracted. |
|
|
@@ -713,6 +752,7 @@ If the embedded method is not used, the following packages are also suitable:
|
|
|
713
752
|
|
|
714
753
|
- IBM Aspera Connect Client (Free)
|
|
715
754
|
- IBM Aspera Desktop Client (Free)
|
|
755
|
+
- IBM Aspera for Desktop (Free)
|
|
716
756
|
- IBM Aspera High Speed Transfer Server (Licensed)
|
|
717
757
|
- IBM Aspera High Speed Transfer Endpoint (Licensed)
|
|
718
758
|
|
|
@@ -733,14 +773,15 @@ Refer to section: [Transfer Agents](#transfer-clients-agents)
|
|
|
733
773
|
|
|
734
774
|
#### Gem files and dependencies
|
|
735
775
|
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
```shell
|
|
739
|
-
./build_package.sh aspera-cli 4.18.0
|
|
740
|
-
```
|
|
776
|
+
Necessary gems can be packed in a `tar.gz` like this:
|
|
741
777
|
|
|
742
|
-
```
|
|
743
|
-
|
|
778
|
+
```bash
|
|
779
|
+
mkdir temp_folder
|
|
780
|
+
gem install aspera-cli:4.25.0.pre --no-document --install-dir temp_folder
|
|
781
|
+
find temp_folder
|
|
782
|
+
mv temp_folder/cache aspera-cli-4.25.0.pre-gems
|
|
783
|
+
rm -fr temp_folder
|
|
784
|
+
tar zcvf aspera-cli-4.25.0.pre-gems aspera-cli-4.25.0.pre-gems.tgz
|
|
744
785
|
```
|
|
745
786
|
|
|
746
787
|
#### Unix-like
|
|
@@ -820,7 +861,7 @@ ascli config ascp install --sdk-url=file:///sdk.zip
|
|
|
820
861
|
```
|
|
821
862
|
|
|
822
863
|
> [!NOTE]
|
|
823
|
-
>
|
|
864
|
+
> A beta version of a packaged installed is available.
|
|
824
865
|
|
|
825
866
|
### Container
|
|
826
867
|
|
|
@@ -863,7 +904,7 @@ That is simple, but there are limitations:
|
|
|
863
904
|
|
|
864
905
|
#### Container: Details
|
|
865
906
|
|
|
866
|
-
The container image is built from this [Dockerfile](container/Dockerfile.tmpl.erb).
|
|
907
|
+
The container image is built from this [Dockerfile](build/container/Dockerfile.tmpl.erb).
|
|
867
908
|
The entry point is `ascli` and the default command is `help`.
|
|
868
909
|
|
|
869
910
|
The container can 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)
|
|
@@ -885,7 +926,7 @@ ascli -v
|
|
|
885
926
|
```
|
|
886
927
|
|
|
887
928
|
```text
|
|
888
|
-
4.
|
|
929
|
+
4.25.0.pre
|
|
889
930
|
```
|
|
890
931
|
|
|
891
932
|
In order to keep persistency of configuration on the host, you should specify your user's configuration folder as a volume for the container.
|
|
@@ -1275,7 +1316,7 @@ It's up to the program to split arguments:
|
|
|
1275
1316
|
- [Windows: How Command Line Parameters Are Parsed](https://daviddeley.com/autohotkey/parameters/parameters.htm#RUBY)
|
|
1276
1317
|
- [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/)
|
|
1277
1318
|
|
|
1278
|
-
is a Ruby program, so Ruby parses the command line (
|
|
1319
|
+
is a Ruby program, so Ruby parses the command line (received with `GetCommandLineW`) into arguments and provides them to the Ruby code (`$0` and `ARGV`).
|
|
1279
1320
|
Ruby vaguely follows the Microsoft C/C++ parameter parsing rules.
|
|
1280
1321
|
(See `w32_cmdvector` in Ruby source [`win32.c`](https://github.com/ruby/ruby/blob/master/win32/win32.c#L1766)) : <!--cspell:disable-line-->
|
|
1281
1322
|
|
|
@@ -1312,12 +1353,12 @@ Basically it handles I/O redirection (`<>|`), shell variables (`%`), multiple co
|
|
|
1312
1353
|
Eventually, all those special characters are removed from the command line unless escaped with `^` or `"`.
|
|
1313
1354
|
`"` are kept and given to the program.
|
|
1314
1355
|
|
|
1315
|
-
#### Shell parsing for Windows:
|
|
1356
|
+
#### Shell parsing for Windows: PowerShell
|
|
1316
1357
|
|
|
1317
|
-
For
|
|
1358
|
+
For PowerShell, it actually depends on the version of it (5.1, 7.3+).
|
|
1318
1359
|
|
|
1319
|
-
A difficulty is that
|
|
1320
|
-
|
|
1360
|
+
A difficulty is that PowerShell parses the command line for its own use and manages special characters, but then it passes the command line to the program (Ruby) as a single string, possibly without the special characters.
|
|
1361
|
+
If not using PowerShell features (e.g. variable), one can use the "stop-parsing" token `--%`.
|
|
1321
1362
|
|
|
1322
1363
|
Details can be found here:
|
|
1323
1364
|
|
|
@@ -1325,22 +1366,87 @@ Details can be found here:
|
|
|
1325
1366
|
|
|
1326
1367
|
- [quoting rules](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules)
|
|
1327
1368
|
|
|
1328
|
-
|
|
1369
|
+
##### PowserShell 5
|
|
1370
|
+
|
|
1371
|
+
- Check your powershell version:
|
|
1372
|
+
|
|
1373
|
+
```powershell
|
|
1374
|
+
$psversiontable.psversion.Major
|
|
1375
|
+
```
|
|
1376
|
+
|
|
1377
|
+
```text
|
|
1378
|
+
5
|
|
1379
|
+
```
|
|
1380
|
+
|
|
1381
|
+
The following examples give the same result on Windows using PowerShell 5:
|
|
1382
|
+
|
|
1383
|
+
```text
|
|
1384
|
+
╭───────┬───────╮
|
|
1385
|
+
│ field │ value │
|
|
1386
|
+
╞═══════╪═══════╡
|
|
1387
|
+
│ x │ true │
|
|
1388
|
+
│ k │ v │
|
|
1389
|
+
╰───────┴───────╯
|
|
1390
|
+
```
|
|
1391
|
+
|
|
1392
|
+
- Use PowerShell argument `--%` to place PowerShell in "stop-parsing" mode.
|
|
1329
1393
|
|
|
1330
1394
|
```powershell
|
|
1331
|
-
|
|
1395
|
+
ascli config echo --% @json:'{"k":"v","x":true}'
|
|
1396
|
+
```
|
|
1397
|
+
|
|
1398
|
+
- Triple double quotes are replaced with a single double quote in normal mode:
|
|
1332
1399
|
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1400
|
+
```powershell
|
|
1401
|
+
ascli config echo @json:'{"""k""":"""v""","""x""":true}'
|
|
1402
|
+
```
|
|
1336
1403
|
|
|
1337
|
-
|
|
1404
|
+
- To insert PowerShell variables in the JSON string, one can do:
|
|
1338
1405
|
|
|
1339
|
-
|
|
1406
|
+
```powershell
|
|
1407
|
+
$var="v"
|
|
1408
|
+
ascli conf echo $('@json:{"""k""":"""' + $var + '""","""x""":true}')
|
|
1340
1409
|
```
|
|
1341
1410
|
|
|
1342
|
-
|
|
1343
|
-
|
|
1411
|
+
##### PowserShell 7
|
|
1412
|
+
|
|
1413
|
+
- Check your powershell version:
|
|
1414
|
+
|
|
1415
|
+
```powershell
|
|
1416
|
+
$psversiontable.psversion.Major
|
|
1417
|
+
```
|
|
1418
|
+
|
|
1419
|
+
```text
|
|
1420
|
+
7
|
|
1421
|
+
```
|
|
1422
|
+
|
|
1423
|
+
The following examples give the same result on Windows using PowerShell 7:
|
|
1424
|
+
|
|
1425
|
+
- Use PowerShell argument `--%` to place PowerShell in "stop-parsing" mode.
|
|
1426
|
+
|
|
1427
|
+
```powershell
|
|
1428
|
+
ascli config echo --% @json:{"k":"v","x":true}
|
|
1429
|
+
```
|
|
1430
|
+
|
|
1431
|
+
- Single quote protects double quote in normal mode:
|
|
1432
|
+
|
|
1433
|
+
```powershell
|
|
1434
|
+
ascli config echo @json:'{"k":"v","x":true}'
|
|
1435
|
+
```
|
|
1436
|
+
|
|
1437
|
+
- To insert PowerShell variables in the JSON string, one can do:
|
|
1438
|
+
|
|
1439
|
+
```powershell
|
|
1440
|
+
$var="v"
|
|
1441
|
+
ascli conf echo $('@json:{"k":"' + $var + '","x":true}')
|
|
1442
|
+
```
|
|
1443
|
+
|
|
1444
|
+
- Use PowerShell structure and then convert to JSON string:
|
|
1445
|
+
|
|
1446
|
+
```powershell
|
|
1447
|
+
$var="v"
|
|
1448
|
+
ascli conf echo "@json:$(@{ k = $var; x = $true } | ConvertTo-Json -Compress)"
|
|
1449
|
+
```
|
|
1344
1450
|
|
|
1345
1451
|
#### Extended Values (JSON, Ruby, ...)
|
|
1346
1452
|
|
|
@@ -1366,7 +1472,7 @@ ascli config echo 1 2 3
|
|
|
1366
1472
|
ERROR: Argument: unprocessed values: ["2", "3"]
|
|
1367
1473
|
```
|
|
1368
1474
|
|
|
1369
|
-
`config echo` displays the value of the **first** argument using
|
|
1475
|
+
`config echo` displays the value of the **first** argument using the current output `format`.
|
|
1370
1476
|
|
|
1371
1477
|
> [!NOTE]
|
|
1372
1478
|
> It gets its value after shell command line parsing and `ascli` extended value parsing.
|
|
@@ -1379,7 +1485,7 @@ Depending on the case, a different `format` option is used to display the actual
|
|
|
1379
1485
|
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.
|
|
1380
1486
|
|
|
1381
1487
|
Double quotes are processed by the shell to create a single string argument.
|
|
1382
|
-
For **POSIX shells**, single quotes can also be used in this case, or protect the special character ` ` (space) with a backslash.
|
|
1488
|
+
For **POSIX shells**, single quotes can also be used in this case, or protect the special character ` ` (space) with a backslash.
|
|
1383
1489
|
|
|
1384
1490
|
```shell
|
|
1385
1491
|
ascli config echo "Hello World" --format=text
|
|
@@ -1398,7 +1504,7 @@ Even if the variable contains spaces it results only in one argument for `ascli`
|
|
|
1398
1504
|
|
|
1399
1505
|
> [!NOTE]
|
|
1400
1506
|
> We use a simple shell variable in this example.
|
|
1401
|
-
>
|
|
1507
|
+
> It does not need to be exported as an environment variable.
|
|
1402
1508
|
|
|
1403
1509
|
```shell
|
|
1404
1510
|
MYVAR="Hello World"
|
|
@@ -1564,7 +1670,7 @@ The value of **Options** and **Positional Arguments** is evaluated with the [Ext
|
|
|
1564
1670
|
- **Commands**, typically at the beginning
|
|
1565
1671
|
- **Command Parameters**, mandatory arguments, e.g. creation data or entity identifier
|
|
1566
1672
|
|
|
1567
|
-
When options are removed from the command line, the remaining arguments are typically **Positional Arguments** with a pre-defined order.
|
|
1673
|
+
When options are removed from the command line, the remaining arguments are typically **Positional Arguments** with a significant, pre-defined order.
|
|
1568
1674
|
|
|
1569
1675
|
**Commands** are typically entity types (e.g. `users`) or verbs (e.g. `create`) to act on those entities.
|
|
1570
1676
|
Its value is a `String` that must belong to a fixed list of values in a given context.
|
|
@@ -1581,14 +1687,13 @@ ascli config ascp info
|
|
|
1581
1687
|
- `info` is the third level command: action to be performed
|
|
1582
1688
|
|
|
1583
1689
|
Typically, **Commands** are located at the **beginning** of the command line.
|
|
1584
|
-
Order is significant.
|
|
1585
1690
|
The provided command must match one of the supported commands in the given context.
|
|
1586
1691
|
If wrong, or no command is provided when expected, an error message is displayed and the list of supported commands is displayed.
|
|
1587
1692
|
|
|
1588
1693
|
Standard **Commands** are: `create`, `show`, `list`, `modify`, `delete`.
|
|
1589
1694
|
Some entities also support additional commands.
|
|
1590
1695
|
When those additional commands are related to an entity also reachable in another context, then those commands are located below command `do`.
|
|
1591
|
-
For example sub-commands appear after entity selection (identifier), e.g. `ascli aoc admin node do
|
|
1696
|
+
For example sub-commands appear after entity selection (identifier), e.g. `ascli aoc admin node do <node_id> browse /`: `browse` is a sub-command of `node`.
|
|
1592
1697
|
|
|
1593
1698
|
**Command Parameters** are typically mandatory values for a command, such as entity creation data or entity identifier.
|
|
1594
1699
|
|
|
@@ -1603,6 +1708,29 @@ If a **Command Parameter** begins with `-`, then either use the `@val:` syntax (
|
|
|
1603
1708
|
|
|
1604
1709
|
A few **Command Parameters** are optional, they are always located at the end of the command line.
|
|
1605
1710
|
|
|
1711
|
+
A special Extended Value `@:` has the following meaning:
|
|
1712
|
+
|
|
1713
|
+
- Take all remaining positional arguments
|
|
1714
|
+
- Expect each of them to have the format: `<path>=<value>`
|
|
1715
|
+
- `<path>` designates a path in a complex structure such as Hash or Array.
|
|
1716
|
+
`.` is the path separator.
|
|
1717
|
+
Each segment separated by a dot represents a key in a nested structure.
|
|
1718
|
+
Integer index denote Array, and other denote Hash index.
|
|
1719
|
+
- `ascli` tries to convert `<value>` to the simplest type (bool, int, float, string).
|
|
1720
|
+
If a specific type is required, it can be specified using the `@json:` or `@ruby:` syntax.
|
|
1721
|
+
For example, `--a.b.c=1` is equivalent to `--a=@json'{"b":{"c":1}}'`.
|
|
1722
|
+
This allows specifying nested keys directly on the command line using a concise **dot-separated** syntax.
|
|
1723
|
+
|
|
1724
|
+
Example:
|
|
1725
|
+
|
|
1726
|
+
```bash
|
|
1727
|
+
ascli conf echo @: a.b=1 a.c=2 a.d.0=hello a.d.1=world --format=json
|
|
1728
|
+
```
|
|
1729
|
+
|
|
1730
|
+
```json
|
|
1731
|
+
{"a":{"b":1,"c":2,"d":["hello","world"]}}
|
|
1732
|
+
```
|
|
1733
|
+
|
|
1606
1734
|
#### Options
|
|
1607
1735
|
|
|
1608
1736
|
Command-line options, such as `--log-level=debug`, follow these conventions:
|
|
@@ -1634,13 +1762,17 @@ Exceptions and Special Cases:
|
|
|
1634
1762
|
- **Option Terminator**:
|
|
1635
1763
|
The special option `--` ends option parsing.
|
|
1636
1764
|
All subsequent arguments, including those starting with `-`, are treated as positional arguments.
|
|
1637
|
-
- **Dot Notation for
|
|
1765
|
+
- **Dot Notation for Hash and Array**:
|
|
1638
1766
|
If an option name contains a dot (`.`), it is interpreted as a `Hash`.
|
|
1639
1767
|
Each segment separated by a dot represents a key in a nested structure.
|
|
1640
1768
|
`ascli` tries to convert the value to the simplest type (bool, int, float, string).
|
|
1641
1769
|
If a specific type is required, it can be specified using the `@json:` or `@ruby:` syntax.
|
|
1642
1770
|
For example, `--a.b.c=1` is equivalent to `--a=@json'{"b":{"c":1}}'`.
|
|
1643
1771
|
This allows specifying nested keys directly on the command line using a concise **dot-separated** syntax.
|
|
1772
|
+
- **Cummulative Hashes**:
|
|
1773
|
+
When an option of type `Hash` is set, the value is deep-merged to an existing or default value.
|
|
1774
|
+
Setting to `@none:` is equivalent to setting to `@json:{}`, i.e. an empty `Hash`.
|
|
1775
|
+
This can be used to start from an empty value, and not used existing default value.
|
|
1644
1776
|
|
|
1645
1777
|
Example:
|
|
1646
1778
|
|
|
@@ -1672,6 +1804,7 @@ The value for **any** options can come from the following locations (in this ord
|
|
|
1672
1804
|
Environment variable starting with prefix: ASCLI_ are taken as option values, e.g. `ASCLI_OPTION_NAME` is for `--option-name`.
|
|
1673
1805
|
|
|
1674
1806
|
Option `show_config` dry runs the configuration, and then returns currently set values for options.
|
|
1807
|
+
|
|
1675
1808
|
`ascli --show-config` outputs global options only, and `ascli [plugin] --show-config` outputs global and plugin default options.
|
|
1676
1809
|
In addition, option `--show-config` can be added at the end of any full command line, this displays the options that would be used for the command.
|
|
1677
1810
|
|
|
@@ -1704,8 +1837,8 @@ To redirect results to a file, use option `output`.
|
|
|
1704
1837
|
|
|
1705
1838
|
Depending on action, the output will contain:
|
|
1706
1839
|
|
|
1707
|
-
| Result Type | Description
|
|
1708
|
-
|
|
1840
|
+
| Result Type | Description |
|
|
1841
|
+
|-----------------|-----------------------------------------------------------------------------------|
|
|
1709
1842
|
| `single_object` | Displayed as a 2 dimensional table: one line per field, first column is field name, and second is field value. Nested hashes are collapsed. |
|
|
1710
1843
|
| `object_list` | Displayed as a 2 dimensional table: one line per item, one column per field. |
|
|
1711
1844
|
| `value_list` | A table with one column. |
|
|
@@ -1713,47 +1846,75 @@ Depending on action, the output will contain:
|
|
|
1713
1846
|
| `status` | A message. |
|
|
1714
1847
|
| `other_struct` | A complex structure that cannot be displayed as an array. |
|
|
1715
1848
|
|
|
1849
|
+
#### Enhanced display of special values
|
|
1850
|
+
|
|
1851
|
+
Special values are highlighted as follows in `format=table`:
|
|
1852
|
+
|
|
1853
|
+
| Value | Display |
|
|
1854
|
+
|----------------|------------------|
|
|
1855
|
+
| `nil` | `<null>` |
|
|
1856
|
+
| empty `String` | `<empty string>` |
|
|
1857
|
+
| empty `Array` | `<empty list>` |
|
|
1858
|
+
| empty `Hash` | `<empty dict>` |
|
|
1859
|
+
|
|
1860
|
+
Example:
|
|
1861
|
+
|
|
1862
|
+
```shell
|
|
1863
|
+
ascli config echo @json:'{"ni":null,"es":"","ea":[],"eh":{}}'
|
|
1864
|
+
```
|
|
1865
|
+
|
|
1866
|
+
```text
|
|
1867
|
+
╭───────┬────────────────╮
|
|
1868
|
+
│ field │ value │
|
|
1869
|
+
╞═══════╪════════════════╡
|
|
1870
|
+
│ ni │ <null> │
|
|
1871
|
+
│ es │ <empty string> │
|
|
1872
|
+
│ ea │ <empty list> │
|
|
1873
|
+
│ eh │ <empty dict> │
|
|
1874
|
+
╰───────┴────────────────╯
|
|
1875
|
+
```
|
|
1876
|
+
|
|
1716
1877
|
#### Option: `format`
|
|
1717
1878
|
|
|
1718
1879
|
The style of output can be set using the `format` option:
|
|
1719
1880
|
|
|
1720
|
-
| `format` | Output formatting
|
|
1721
|
-
|
|
1722
|
-
| `table` | Text table (default)
|
|
1723
|
-
| `text` | Value as `String`
|
|
1724
|
-
| `ruby` | Ruby code
|
|
1725
|
-
| `json` | JSON code
|
|
1726
|
-
| `jsonpp` | JSON pretty printed
|
|
1727
|
-
| `yaml` | YAML
|
|
1728
|
-
| `csv` | Comma Separated Values
|
|
1729
|
-
| `image` | Image URL or data
|
|
1730
|
-
| `nagios` | Suitable for Nagios
|
|
1881
|
+
| `format` | Output formatting |
|
|
1882
|
+
|----------|-------------------------|
|
|
1883
|
+
| `table` | Text table (default) |
|
|
1884
|
+
| `text` | Value as `String` |
|
|
1885
|
+
| `ruby` | Ruby code |
|
|
1886
|
+
| `json` | JSON code |
|
|
1887
|
+
| `jsonpp` | JSON pretty printed |
|
|
1888
|
+
| `yaml` | YAML |
|
|
1889
|
+
| `csv` | Comma Separated Values |
|
|
1890
|
+
| `image` | Image URL or data |
|
|
1891
|
+
| `nagios` | Suitable for Nagios |
|
|
1731
1892
|
|
|
1732
1893
|
By default, result of type `single_object` and `object_list` are displayed using format `table`.
|
|
1733
1894
|
|
|
1734
1895
|
#### Option: `table_style`
|
|
1735
1896
|
|
|
1736
|
-
The table
|
|
1897
|
+
The way `format`: `table` and `csv` are generated can be customized with option: `table_style` which expects a `Hash`.
|
|
1737
1898
|
|
|
1738
1899
|
For `format=table`, options are the ones described in gem [`terminal-table`](https://github.com/tj/terminal-table).
|
|
1739
1900
|
|
|
1740
|
-
For `format=csv`, options are described in gem [`csv`](https://ruby.github.io/csv/CSV.html#class-CSV-label-Options+for+Generating).
|
|
1741
|
-
|
|
1742
1901
|
For example, to display a table with thick Unicode borders:
|
|
1743
1902
|
|
|
1744
1903
|
```shell
|
|
1745
1904
|
ascli config preset over --table-style=@ruby:'{border: :unicode_thick_edge}'
|
|
1746
1905
|
```
|
|
1747
1906
|
|
|
1907
|
+
> [!NOTE]
|
|
1908
|
+
> Other border styles exist, not limited to: `:unicode`, `:unicode_round`.
|
|
1909
|
+
|
|
1910
|
+
For `format=csv`, options are described in gem [`csv`](https://ruby.github.io/csv/CSV.html#class-CSV-label-Options+for+Generating).
|
|
1911
|
+
|
|
1748
1912
|
For example, to display a CSV with headers and quotes:
|
|
1749
1913
|
|
|
1750
1914
|
```shell
|
|
1751
1915
|
ascli config echo @json:'[{"name":"foo","id":1},{"name":"bar","id":8}]' --format=csv --table=@json:'{"headers":true,"force_quotes":true}'
|
|
1752
1916
|
```
|
|
1753
1917
|
|
|
1754
|
-
> [!NOTE]
|
|
1755
|
-
> Other border styles exist, not limited to: `:unicode`, `:unicode_round`.
|
|
1756
|
-
|
|
1757
1918
|
#### Option: `flat_hash`: Single level `Hash`
|
|
1758
1919
|
|
|
1759
1920
|
This option controls how object fields are displayed for complex objects.
|
|
@@ -1801,57 +1962,29 @@ ascli config echo @json:'{"A":"a","B":[{"name":"B1","value":"b1"},{"name":"B2","
|
|
|
1801
1962
|
╰───────┴────────────────────────────────────────────────────────────────────────╯
|
|
1802
1963
|
```
|
|
1803
1964
|
|
|
1804
|
-
#### Enhanced display of special values
|
|
1805
|
-
|
|
1806
|
-
Special values are highlighted as follows::
|
|
1807
|
-
|
|
1808
|
-
| Value | Display |
|
|
1809
|
-
|----------------|------------------|
|
|
1810
|
-
| `nil` | `<null>` |
|
|
1811
|
-
| empty `String` | `<empty string>` |
|
|
1812
|
-
| empty `Array` | `<empty list>` |
|
|
1813
|
-
| empty `Hash` | `<empty dict>` |
|
|
1814
|
-
|
|
1815
|
-
Example:
|
|
1816
|
-
|
|
1817
|
-
```shell
|
|
1818
|
-
ascli config echo @json:'{"ni":null,"es":"","ea":[],"eh":{}}'
|
|
1819
|
-
```
|
|
1820
|
-
|
|
1821
|
-
```text
|
|
1822
|
-
╭───────┬────────────────╮
|
|
1823
|
-
│ field │ value │
|
|
1824
|
-
╞═══════╪════════════════╡
|
|
1825
|
-
│ ni │ <null> │
|
|
1826
|
-
│ es │ <empty string> │
|
|
1827
|
-
│ ea │ <empty list> │
|
|
1828
|
-
│ eh │ <empty dict> │
|
|
1829
|
-
╰───────┴────────────────╯
|
|
1830
|
-
```
|
|
1831
|
-
|
|
1832
1965
|
#### Option: `multi_single`
|
|
1833
1966
|
|
|
1834
1967
|
This option controls how result fields are displayed as columns or lines, when option `format` is set to `table`.
|
|
1835
1968
|
Default is `no`.
|
|
1836
1969
|
There are two types of results that are affected by this option:
|
|
1837
1970
|
|
|
1838
|
-
| Result | Description
|
|
1839
|
-
|
|
1840
|
-
| `single_object` | A single item with multiple fields.
|
|
1971
|
+
| Result | Description |
|
|
1972
|
+
|-----------------|---------------------------------------------|
|
|
1973
|
+
| `single_object` | A single item with multiple fields. |
|
|
1841
1974
|
| `object_list` | A list of items, each with multiple fields. |
|
|
1842
1975
|
|
|
1843
1976
|
An item (object) is displayed in one of those 2 ways:
|
|
1844
1977
|
|
|
1845
|
-
| Display | rows | columns
|
|
1846
|
-
|
|
1978
|
+
| Display | rows | columns |
|
|
1979
|
+
|------------|--------|---------------------|
|
|
1847
1980
|
| Simple | Fields | `field` and `value` |
|
|
1848
|
-
| Transposed | Items | Fields
|
|
1981
|
+
| Transposed | Items | Fields |
|
|
1849
1982
|
|
|
1850
1983
|
The display of result is as follows:
|
|
1851
1984
|
|
|
1852
|
-
| Result | `no` | `yes`
|
|
1853
|
-
|
|
1854
|
-
| `single_object` | Simple | Simple
|
|
1985
|
+
| Result | `no` | `yes` | `single` |
|
|
1986
|
+
|-----------------|------------|-------------|-------------------------------------|
|
|
1987
|
+
| `single_object` | Simple | Simple | Simple |
|
|
1855
1988
|
| `object_list` | Transposed | Simple<br/>(Multiple objects) | Simple if 1 object,<br/>transposed if 2+ objects |
|
|
1856
1989
|
|
|
1857
1990
|
This parameter can be set as a global default with:
|
|
@@ -2004,17 +2137,17 @@ In above example, the same result is obtained with option:
|
|
|
2004
2137
|
|
|
2005
2138
|
Option `select` applies the filter after a possible "flattening" with option: `flat_hash`.
|
|
2006
2139
|
|
|
2007
|
-
|
|
2140
|
+
### Percent selector
|
|
2008
2141
|
|
|
2009
2142
|
The percent selector allows identification of an entity by another unique identifier other than the native identifier.
|
|
2010
2143
|
|
|
2011
2144
|
Syntax: `%<field>:<value>`
|
|
2012
2145
|
|
|
2013
2146
|
When a command is executed on a single entity, the entity is identified by a unique identifier that follows the command.
|
|
2014
|
-
For example, in the following command, `
|
|
2147
|
+
For example, in the following command, `_my_user_id_` is the user's identifier:
|
|
2015
2148
|
|
|
2016
2149
|
```shell
|
|
2017
|
-
ascli aoc admin user show
|
|
2150
|
+
ascli aoc admin user show _my_user_id_
|
|
2018
2151
|
```
|
|
2019
2152
|
|
|
2020
2153
|
Some commands provide the following capability:
|
|
@@ -2043,38 +2176,42 @@ Decoders act like a function with its parameter on right-hand side and are recog
|
|
|
2043
2176
|
|
|
2044
2177
|
The following decoders are supported:
|
|
2045
2178
|
|
|
2046
|
-
| Decoder | Parameter| Returns | Description
|
|
2047
|
-
|
|
2048
|
-
| `base64` | `String` | `String` | Decode a base64 encoded string |
|
|
2049
|
-
| `csvt` | `String` | `Array` | Decode a titled CSV value |
|
|
2050
|
-
| `env` | `String` | `String` | Read from a named env var name
|
|
2051
|
-
| `file` | `String` | `String` | Read value from specified file (prefix `~/` is replaced with the users home folder)
|
|
2052
|
-
| `json` | `String` | Any | Decode JSON values
|
|
2053
|
-
| `lines` | `String` | `Array` | Split a string in multiple lines and return an
|
|
2054
|
-
| `list` | `String` | `Array` | Split a string in multiple items taking first character as separator and return an
|
|
2055
|
-
| `none` | None | Nil | A null value |
|
|
2056
|
-
| `path` | `String` | `String` | Performs path expansion on specified path (prefix `~/` is replaced with the
|
|
2179
|
+
| Decoder | Parameter| Returns | Description |
|
|
2180
|
+
|----------|----------|----------|------------------------------------------------------------------------------------------|
|
|
2181
|
+
| `base64` | `String` | `String` | Decode a base64 encoded string. |
|
|
2182
|
+
| `csvt` | `String` | `Array` | Decode a titled CSV value. |
|
|
2183
|
+
| `env` | `String` | `String` | Read from a named env var name. e.g. `--password=@env:MYPASSVAR` |
|
|
2184
|
+
| `file` | `String` | `String` | Read value from specified file (prefix `~/` is replaced with the users home folder). e.g. `--key=@file:~/.ssh/mykey` |
|
|
2185
|
+
| `json` | `String` | Any | Decode JSON values. Convenient to provide complex structures. |
|
|
2186
|
+
| `lines` | `String` | `Array` | Split a string in multiple lines and return an `Array`. |
|
|
2187
|
+
| `list` | `String` | `Array` | Split a string in multiple items taking first character as separator and return an `Array`. |
|
|
2188
|
+
| `none` | None | Nil | A `null` value. |
|
|
2189
|
+
| `path` | `String` | `String` | Performs path expansion on specified path (prefix `~/` is replaced with the user's home folder). e.g. `--config-file=@path:~/sample_config.yml` |
|
|
2057
2190
|
| `preset` | `String` | `Hash` | Get whole option preset value by name. Sub-values can also be used, using `.` as separator. e.g. `foo.bar` is `conf[foo][bar]` |
|
|
2058
|
-
| `extend` | `String` | `String` | Evaluates embedded extended value syntax in string |
|
|
2191
|
+
| `extend` | `String` | `String` | Evaluates embedded extended value syntax in string. |
|
|
2059
2192
|
| `re` | `String` | `Regexp` | Ruby Regular Expression (short for `@ruby:/.../`) |
|
|
2060
|
-
| `ruby` | `String` | Any | Execute specified Ruby code |
|
|
2061
|
-
| `secret` | None | `String` | Ask password interactively (hides input) |
|
|
2062
|
-
| `stdin` | None | `String` | Read from stdin in text mode (no value on right) |
|
|
2063
|
-
| `stdbin` | None | `String` | Read from stdin in binary mode (no value on right) |
|
|
2064
|
-
| `uri` | `String` | `String` | Read value from specified URL
|
|
2193
|
+
| `ruby` | `String` | Any | Execute specified Ruby code. |
|
|
2194
|
+
| `secret` | None | `String` | Ask password interactively (hides input). |
|
|
2195
|
+
| `stdin` | None | `String` | Read from stdin in text mode (no value on right). |
|
|
2196
|
+
| `stdbin` | None | `String` | Read from stdin in binary mode (no value on right). |
|
|
2197
|
+
| `uri` | `String` | `String` | Read value from specified URL. e.g. `--fpac=@uri:http://serv/f.pac` |
|
|
2065
2198
|
| `val` | `String` | `String` | Prevent decoders on the right to be decoded. e.g. `--key=@val:@file:foo` sets the option `key` to value `@file:foo`. |
|
|
2066
|
-
| `yaml` | `String` | Any | Decode YAML |
|
|
2067
|
-
| `zlib` | `String` | `String` | Decompress data using zlib |
|
|
2199
|
+
| `yaml` | `String` | Any | Decode YAML. |
|
|
2200
|
+
| `zlib` | `String` | `String` | Decompress data using zlib. |
|
|
2201
|
+
| `p` | None | Any | Parses remaining arguments as `Hash` or `Array`. |
|
|
2068
2202
|
|
|
2069
2203
|
> [!NOTE]
|
|
2070
2204
|
> A few commands support a value of type `Proc` (lambda expression).
|
|
2071
|
-
> For example, the **Extended Value** `@ruby:'->(i){i["attr"]}'` is a lambda expression that returns the value for key `attr` of the `Hash` `i`.
|
|
2205
|
+
> For example, the **Extended Value** `@ruby:'->(i){i["attr"]}'` is a lambda expression that returns the value for key `attr` of the `Hash` parameter named `i`.
|
|
2072
2206
|
|
|
2073
2207
|
To display the result of an extended value, use the `config echo` command.
|
|
2074
2208
|
|
|
2075
2209
|
The `extend` decoder is useful to evaluate embedded extended value syntax in a string.
|
|
2076
2210
|
It expects a `@` to close the embedded extended value syntax.
|
|
2077
2211
|
|
|
2212
|
+
Option `parser` allows definition of a default parser when the positinal parameter or option expects a `Hash` or `Array`.
|
|
2213
|
+
For example, with `--parser=json`, the parameter `{}` will be parsed as an empty JSON Hash, even without prefix `@json:`.
|
|
2214
|
+
|
|
2078
2215
|
Example: Create a `Hash` value with the convenient `@json:` decoder:
|
|
2079
2216
|
|
|
2080
2217
|
```shell
|
|
@@ -2151,15 +2288,17 @@ EOF
|
|
|
2151
2288
|
{"key1":"value1","key2":["item1","item2"],"key3":{"key4":"value4","key5":"value5"}}
|
|
2152
2289
|
```
|
|
2153
2290
|
|
|
2154
|
-
###
|
|
2291
|
+
### Main, configuration and Persistency Folder
|
|
2155
2292
|
|
|
2156
|
-
`ascli` configuration and persistency files (token cache, file lists, persistency files)
|
|
2293
|
+
`ascli` looks for configuration and persistency files (token cache, file lists, persistency files) in the folder specified using option `home`.
|
|
2294
|
+
The default value is `[User's home folder]/.aspera/ascli`.
|
|
2157
2295
|
|
|
2158
2296
|
> [!NOTE]
|
|
2159
|
-
> `[User's home folder]` is
|
|
2160
|
-
>
|
|
2161
|
-
>
|
|
2162
|
-
>
|
|
2297
|
+
> The `[User's home folder]` is determined using Ruby’s `Dir.home` method.
|
|
2298
|
+
> Primary source: The HOME environment variable.
|
|
2299
|
+
> On Windows: Ruby also checks `%HOMEDRIVE%%HOMEPATH%` and `%USERPROFILE%` (via `rb_w32_home_dir`).
|
|
2300
|
+
> Additionally, `ascli` sets the `%HOME%` environment variable to the value of `%USERPROFILE%` if it exists and is valid.
|
|
2301
|
+
> Therefore, on Windows, `%USERPROFILE%` is preferred because it is generally more reliable than `%HOMEDRIVE%%HOMEPATH%`.
|
|
2163
2302
|
|
|
2164
2303
|
The configuration folder can be displayed using :
|
|
2165
2304
|
|
|
@@ -2172,9 +2311,11 @@ ascli config folder
|
|
|
2172
2311
|
```
|
|
2173
2312
|
|
|
2174
2313
|
> [!NOTE]
|
|
2175
|
-
> This is equivalent to
|
|
2314
|
+
> This is equivalent to display the value of the `home` option.
|
|
2176
2315
|
|
|
2177
|
-
|
|
2316
|
+
```shell
|
|
2317
|
+
ascli --show-config --fields=home
|
|
2318
|
+
```
|
|
2178
2319
|
|
|
2179
2320
|
Example (Windows):
|
|
2180
2321
|
|
|
@@ -2186,11 +2327,28 @@ ascli config folder
|
|
|
2186
2327
|
C:\Users\Kenji\.aspera\ascli
|
|
2187
2328
|
```
|
|
2188
2329
|
|
|
2189
|
-
When OAuth is used (AoC, Faspex5) `ascli` keeps a cache of generated bearer tokens in folder `persist_store` in configuration folder by default.
|
|
2330
|
+
When OAuth is used (AoC, Faspex5) `ascli` keeps a cache of generated bearer tokens in folder `persist_store` located in the configuration folder by default.
|
|
2190
2331
|
Option `cache_tokens` (**yes**/no) allows controlling if OAuth tokens are cached on file system, or generated for each request.
|
|
2191
2332
|
The command `config tokens flush` clears that cache.
|
|
2192
2333
|
Tokens are kept on disk for a maximum of 30 minutes (`TOKEN_CACHE_EXPIRY_SEC`) and garbage collected after that.
|
|
2193
|
-
When a token has expired, then a new token is generated, either using a refresh_token if it is available, or by the default method.
|
|
2334
|
+
When a token has expired, then a new token is generated, either using a `refresh_token` if it is available, or by the default method.
|
|
2335
|
+
|
|
2336
|
+
### Configuration file
|
|
2337
|
+
|
|
2338
|
+
On the first execution of `ascli`, an empty configuration file is created in the configuration folder (`ascli config folder`).
|
|
2339
|
+
There is no mandatory information required in this file.
|
|
2340
|
+
The use of it is optional as any option can be provided on the command line.
|
|
2341
|
+
|
|
2342
|
+
Although the file is a standard `YAML` file, `ascli` provides commands to read and modify it using the `config` command.
|
|
2343
|
+
|
|
2344
|
+
All options for `ascli` can be set on command line, or by env vars, or using [Option Preset](#option-preset) in the configuration file.
|
|
2345
|
+
|
|
2346
|
+
A configuration file provides a way to define default values, especially for authentication options, thus avoiding to always having to specify those options on the command line.
|
|
2347
|
+
|
|
2348
|
+
The default configuration file is: `$HOME/.aspera/ascli/config.yaml` (this can be overridden with option `--config-file=path` or its env var).
|
|
2349
|
+
|
|
2350
|
+
The configuration file is a catalog of named lists of options, called: [Option Preset](#option-preset).
|
|
2351
|
+
Then, instead of specifying some common options on the command line (e.g. address, credentials), it is possible to invoke the ones of an [Option Preset](#option-preset) (e.g. `mypreset`) using the option `preset`: `--preset=mypreset` or its shortcut: `-Pmypreset`.
|
|
2194
2352
|
|
|
2195
2353
|
### Invalid Filename Characters
|
|
2196
2354
|
|
|
@@ -2210,23 +2368,8 @@ The default value is `_<>:"/\|?*`, corresponding to replacement character `_` an
|
|
|
2210
2368
|
Some temporary files may be needed during runtime.
|
|
2211
2369
|
The temporary folder may be specified with option: `temp_folder`.
|
|
2212
2370
|
Temporary files are deleted at the end of execution unless option: `clean_temp` is set to `no`.
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
On the first execution of `ascli`, an empty configuration file is created in the configuration folder (`ascli config folder`).
|
|
2217
|
-
There is no mandatory information required in this file.
|
|
2218
|
-
The use of it is optional as any option can be provided on the command line.
|
|
2219
|
-
|
|
2220
|
-
Although the file is a standard `YAML` file, `ascli` provides commands to read and modify it using the `config` command.
|
|
2221
|
-
|
|
2222
|
-
All options for `ascli` can be set on command line, or by env vars, or using [Option Preset](#option-preset) in the configuration file.
|
|
2223
|
-
|
|
2224
|
-
A configuration file provides a way to define default values, especially for authentication options, thus avoiding to always having to specify those options on the command line.
|
|
2225
|
-
|
|
2226
|
-
The default configuration file is: `$HOME/.aspera/ascli/config.yaml` (this can be overridden with option `--config-file=path` or its env var).
|
|
2227
|
-
|
|
2228
|
-
The configuration file is a catalog of named lists of options, called: [Option Preset](#option-preset).
|
|
2229
|
-
Then, instead of specifying some common options on the command line (e.g. address, credentials), it is possible to invoke the ones of an [Option Preset](#option-preset) (e.g. `mypreset`) using the option `preset`: `--preset=mypreset` or its shortcut: `-Pmypreset`.
|
|
2371
|
+
By default (`@sys`), the temporary folder is the system's temporary folder for the current user (Ruby `Etc.systmpdir`).
|
|
2372
|
+
A special value of `@env` will set the folder to Ruby `Dir.tmpdir` which uses regular env var to set the temp folder.
|
|
2230
2373
|
|
|
2231
2374
|
#### Option Preset
|
|
2232
2375
|
|
|
@@ -2325,7 +2468,7 @@ ascli config preset get default _plugin_name_
|
|
|
2325
2468
|
"_default_preset_for_plugin_"
|
|
2326
2469
|
```
|
|
2327
2470
|
|
|
2328
|
-
|
|
2471
|
+
### Plugin: `config`: Configuration
|
|
2329
2472
|
|
|
2330
2473
|
Plugin `config` provides general commands for `ascli`:
|
|
2331
2474
|
|
|
@@ -2371,7 +2514,7 @@ ascli config preset set GLOBAL version_check_days 0
|
|
|
2371
2514
|
ascli config preset set default config my_common_defaults
|
|
2372
2515
|
```
|
|
2373
2516
|
|
|
2374
|
-
|
|
2517
|
+
#### Tested commands for `config`
|
|
2375
2518
|
|
|
2376
2519
|
> [!NOTE]
|
|
2377
2520
|
> Add `ascli config` in front of the following commands:
|
|
@@ -2394,11 +2537,14 @@ ascp show
|
|
|
2394
2537
|
ascp spec
|
|
2395
2538
|
check_update
|
|
2396
2539
|
coffee
|
|
2540
|
+
coffee --log-level=trace2 --log-format=caller
|
|
2397
2541
|
coffee --ui=text
|
|
2398
2542
|
coffee --ui=text --image=@json:'{"text":true,"double":false}'
|
|
2399
2543
|
coffee --ui=text --image=@json:'{"text":true}'
|
|
2400
2544
|
detect https://faspex5.example.com/path
|
|
2545
|
+
detect https://faspex5.example.com/path faspex5
|
|
2401
2546
|
detect https://node.example.com/path
|
|
2547
|
+
detect https://server.example.com/path server
|
|
2402
2548
|
detect https://shares.example.com/path shares
|
|
2403
2549
|
detect https://tst.example.com/path faspio
|
|
2404
2550
|
detect https://tst.example.com/path httpgw
|
|
@@ -2415,10 +2561,12 @@ echo @json:'[{"user":{"id":1,"name":"foo"},"project":"bar"}]' --multi-single=yes
|
|
|
2415
2561
|
echo @lines:@stdin:
|
|
2416
2562
|
echo @list:,1,2,3
|
|
2417
2563
|
echo @secret:
|
|
2564
|
+
echo @stdbin:
|
|
2418
2565
|
echo @uri:/etc/hosts
|
|
2419
2566
|
echo @uri:file:/etc/hosts
|
|
2420
2567
|
echo @uri:http://ifconfig.me
|
|
2421
2568
|
echo @uri:https://ifconfig.me
|
|
2569
|
+
echo @uri:https://ifconfig.me/ip --cert-stores=@ruby:[OpenSSL::X509::DEFAULT_CERT_DIR,OpenSSL::X509::DEFAULT_CERT_FILE] --http-options.ssl_options=@list:,CIPHER_SERVER_PREFERENCE,-NETSCAPE_CA_DN_BUG --insecure=yes
|
|
2422
2570
|
echo @vault:my_preset.password
|
|
2423
2571
|
echo @zlib:@stdin:
|
|
2424
2572
|
echo hello
|
|
@@ -2437,7 +2585,7 @@ genkey my_key 4096
|
|
|
2437
2585
|
image https://eudemo.asperademo.com/wallpaper.jpg
|
|
2438
2586
|
initdemo
|
|
2439
2587
|
open
|
|
2440
|
-
plugins create my_command
|
|
2588
|
+
plugins create my_command .
|
|
2441
2589
|
plugins list
|
|
2442
2590
|
preset delete conf_name
|
|
2443
2591
|
preset initialize conf_name @json:'{"p1":"v1","p2":"v2"}'
|
|
@@ -2455,9 +2603,9 @@ remote_certificate chain https://node.example.com/path
|
|
|
2455
2603
|
remote_certificate name https://node.example.com/path
|
|
2456
2604
|
remote_certificate only https://node.example.com/path
|
|
2457
2605
|
smtp_settings
|
|
2606
|
+
sync spec
|
|
2458
2607
|
tokens flush
|
|
2459
2608
|
tokens list
|
|
2460
|
-
tokens show foobar
|
|
2461
2609
|
transferd install
|
|
2462
2610
|
transferd list
|
|
2463
2611
|
vault create @json:'{"label":"my_label","password":"my_password_here","description":"my secret"}'
|
|
@@ -2470,12 +2618,14 @@ wizard https://faspex4.example.com/path faspex --username=test --password=test
|
|
|
2470
2618
|
wizard https://faspex5.example.com/path faspex5 --key-path=my_private_key
|
|
2471
2619
|
wizard https://node.example.com/path node --username=test --password=test
|
|
2472
2620
|
wizard https://orch.example.com/path orchestrator --username=test --password=test
|
|
2621
|
+
wizard https://server.example.com/path server --username=my_username --password=my_password
|
|
2473
2622
|
wizard https://shares.example.com/path shares --username=test --password=test
|
|
2474
|
-
wizard
|
|
2623
|
+
wizard https://tst.example.com/path faspio --username=my_username --password=my_password
|
|
2475
2624
|
wizard my_org aoc --key-path=my_private_key --username=my_user_email --use-generic-client=yes
|
|
2625
|
+
wizard my_org aoc mypreset --key-path=my_private_key --username=my_user_email
|
|
2476
2626
|
```
|
|
2477
2627
|
|
|
2478
|
-
#### Format of file
|
|
2628
|
+
#### Format of configuration file
|
|
2479
2629
|
|
|
2480
2630
|
The configuration file is a `Hash` in a YAML file.
|
|
2481
2631
|
Example:
|
|
@@ -2585,20 +2735,21 @@ The wizard is a command that asks the user for information and creates an [Optio
|
|
|
2585
2735
|
|
|
2586
2736
|
It takes three optional arguments:
|
|
2587
2737
|
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2738
|
+
|#| Parameter description | If not provided, `ascli` |
|
|
2739
|
+
|-|--------------------------------------------|--------------------------------------------|
|
|
2740
|
+
|1| **URL** or hostname of the application | ask for it. |
|
|
2741
|
+
|2| The **plugin name** to limit search to | tries to detect known plugins from the URL |
|
|
2742
|
+
|3| The **preset name** to save in config file | generates a unique preset name |
|
|
2591
2743
|
|
|
2592
|
-
|
|
2744
|
+
Options are also available for the wizard:
|
|
2593
2745
|
|
|
2594
|
-
| Option | Value | Description
|
|
2595
|
-
|
|
2596
|
-
| `default` | [yes]/no | Set as default configuration for specified plugin.
|
|
2746
|
+
| Option | Value | Description |
|
|
2747
|
+
|-------------|----------|---------------------------------------------------------------------|
|
|
2748
|
+
| `default` | [yes]/no | Set as default configuration for specified plugin. |
|
|
2597
2749
|
| `override` | yes/[no] | Override existing default preset name for the plugin, if it exists. |
|
|
2598
|
-
| `
|
|
2599
|
-
| `test-mode` | yes/[no] | Skip private key check step. |
|
|
2750
|
+
| `key_path` | path | Path to private key for JWT. |
|
|
2600
2751
|
|
|
2601
|
-
Other options can be provided to the wizard, such as `--username`, etc...
|
|
2752
|
+
Other plugin-specific options can be provided to the wizard, such as `--username`, etc...
|
|
2602
2753
|
They will be added to the [Option Preset](#option-preset) created by the wizard.
|
|
2603
2754
|
|
|
2604
2755
|
The simplest invocation is:
|
|
@@ -2607,6 +2758,9 @@ The simplest invocation is:
|
|
|
2607
2758
|
ascli config wizard
|
|
2608
2759
|
```
|
|
2609
2760
|
|
|
2761
|
+
If the application requires a private key, the user can either provide the path to it with option `key_path`.
|
|
2762
|
+
The user is told where to place the associated public pey PEM in the application.
|
|
2763
|
+
|
|
2610
2764
|
#### Example of configuration for a plugin
|
|
2611
2765
|
|
|
2612
2766
|
For Faspex, Shares, Node (including ATS, Aspera Transfer Service), Console,
|
|
@@ -2713,8 +2867,8 @@ brew install hashicorp/tap/vault
|
|
|
2713
2867
|
vault server -dev -dev-root-token-id=dev-only-token
|
|
2714
2868
|
```
|
|
2715
2869
|
|
|
2716
|
-
| Parameter | Example
|
|
2717
|
-
|
|
2870
|
+
| Parameter | Example | Description |
|
|
2871
|
+
|-----------|-------------------------|---------------------------------------------------------------------|
|
|
2718
2872
|
| `type` | `vault` | The type of the vault |
|
|
2719
2873
|
| `url` | `http://127.0.0.1:8200` | The URL of the vault |
|
|
2720
2874
|
| `token` | `dev-only-token` | The token for the vault, by default uses parameter `vault_password` |
|
|
@@ -2730,10 +2884,10 @@ vault server -dev -dev-root-token-id=dev-only-token
|
|
|
2730
2884
|
|
|
2731
2885
|
It is possible to manage secrets in macOS keychain (only read supported currently).
|
|
2732
2886
|
|
|
2733
|
-
| Parameter | Example
|
|
2734
|
-
|
|
2735
|
-
| `type` | `system`
|
|
2736
|
-
| `name` | ``ascli``
|
|
2887
|
+
| Parameter | Example | Description |
|
|
2888
|
+
|-----------|-------------|------------------------------------|
|
|
2889
|
+
| `type` | `system` | The type of the vault. |
|
|
2890
|
+
| `name` | ``ascli`` | The name of the keychain to use. |
|
|
2737
2891
|
|
|
2738
2892
|
```shell
|
|
2739
2893
|
--vault=@json:'{"type":"system","name":"ascli"}'
|
|
@@ -2747,10 +2901,10 @@ It is possible to store and use secrets encrypted in a file using option `vault`
|
|
|
2747
2901
|
{"type":"file","name":"vault.bin"}
|
|
2748
2902
|
```
|
|
2749
2903
|
|
|
2750
|
-
| Parameter | Example | Description
|
|
2751
|
-
|
|
2752
|
-
| `type` | `file` | The type of the vault
|
|
2753
|
-
| `name` | `vault.bin` | File path, absolute, or relative to the configuration folder `ASCLI_HOME
|
|
2904
|
+
| Parameter | Example | Description |
|
|
2905
|
+
|-----------|--------------|--------------------------------------------------------------------|
|
|
2906
|
+
| `type` | `file` | The type of the vault. |
|
|
2907
|
+
| `name` | `vault.bin` | File path, absolute, or relative to the configuration folder `ASCLI_HOME`. |
|
|
2754
2908
|
|
|
2755
2909
|
#### Vault: Operations
|
|
2756
2910
|
|
|
@@ -2806,7 +2960,16 @@ It consists in using a pair of associated keys: a private key and a public key.
|
|
|
2806
2960
|
The same pair can be used for multiple applications.
|
|
2807
2961
|
The file containing the private key (key pair) can optionally be protected by a passphrase.
|
|
2808
2962
|
If the key is protected by a passphrase, then it will be prompted when used.
|
|
2809
|
-
|
|
2963
|
+
Some plugins support option `passphrase`.
|
|
2964
|
+
|
|
2965
|
+
By default, `ascli` does not support `ed25519` type, nor OpenSSH encoded keys.
|
|
2966
|
+
See section: [Private key type ed25519](#private-key-type-ed25519-not-supported-by-default).
|
|
2967
|
+
It requires PEM encoded keys.
|
|
2968
|
+
To support `ed25519` and OpenSSH format (default on modern Linux), install those gems:
|
|
2969
|
+
|
|
2970
|
+
```shell
|
|
2971
|
+
gem install ed25519 bcrypt_pbkdf
|
|
2972
|
+
```
|
|
2810
2973
|
|
|
2811
2974
|
The following sample commands use the shell variable `KEY_PAIR_PATH`.
|
|
2812
2975
|
Set it to the desired safe location of the private key.
|
|
@@ -2827,6 +2990,7 @@ If another format is used, such as `DER`, it can be converted to `PEM`, e.g. usi
|
|
|
2827
2990
|
|
|
2828
2991
|
The generated key is of type `RSA`, by default: **4096** bit.
|
|
2829
2992
|
For convenience, the public key is also extracted with extension `.pub`.
|
|
2993
|
+
Files are PEM encoded.
|
|
2830
2994
|
The key is not passphrase protected.
|
|
2831
2995
|
|
|
2832
2996
|
```shell
|
|
@@ -2888,12 +3052,12 @@ This server can server HTTP or HTTPS (with certificate):
|
|
|
2888
3052
|
|
|
2889
3053
|
The following parameters are supported:
|
|
2890
3054
|
|
|
2891
|
-
| Parameter | Type | Default
|
|
2892
|
-
|
|
2893
|
-
| `url` | `String` | `http://localhost:8080` | Base URL on which requests are listened, a path can be provided.
|
|
2894
|
-
| `cert` | `String` | - | (HTTPS) Path to certificate file (with ext. `.pfx` or `.p12` for PKCS12)
|
|
2895
|
-
| `key` | `String` | - | (HTTPS) Path to private key file (PEM), or passphrase for PKCS12
|
|
2896
|
-
| `chain` | `String` | - | (HTTPS) Path to certificate chain (PEM only)
|
|
3055
|
+
| Parameter | Type | Default | Description |
|
|
3056
|
+
|-------------------|----------|-------------------------|------------------------------------------------------------------|
|
|
3057
|
+
| `url` | `String` | `http://localhost:8080` | Base URL on which requests are listened, a path can be provided. | <!-- markdownlint-disable-line -->
|
|
3058
|
+
| `cert` | `String` | - | (HTTPS) Path to certificate file (with ext. `.pfx` or `.p12` for `PKCS12`). |
|
|
3059
|
+
| `key` | `String` | - | (HTTPS) Path to private key file (PEM), or passphrase for `PKCS12`. |
|
|
3060
|
+
| `chain` | `String` | - | (HTTPS) Path to certificate chain (PEM only). |
|
|
2897
3061
|
|
|
2898
3062
|
Parameter `url` (base URL) defines:
|
|
2899
3063
|
|
|
@@ -2913,12 +3077,12 @@ This is available:
|
|
|
2913
3077
|
|
|
2914
3078
|
The following options can be specified in the option `image`:
|
|
2915
3079
|
|
|
2916
|
-
| Option | Type
|
|
2917
|
-
|
|
2918
|
-
| reserve | `Integer` | Lines reserved to display a status
|
|
2919
|
-
| text | `Bool` | Display text instead of image|
|
|
2920
|
-
| double | `Bool` | Display double text resolution (half characters) |
|
|
2921
|
-
| font_ratio | `Float` | Font height/width ratio in terminal
|
|
3080
|
+
| Option | Type | Description |
|
|
3081
|
+
|------------|-----------|---------------------------------------------------|
|
|
3082
|
+
| reserve | `Integer` | Lines reserved to display a status. |
|
|
3083
|
+
| text | `Bool` | Display text instead of image. |
|
|
3084
|
+
| double | `Bool` | Display double text resolution (half characters). |
|
|
3085
|
+
| font_ratio | `Float` | Font height/width ratio in terminal. |
|
|
2922
3086
|
|
|
2923
3087
|
```shell
|
|
2924
3088
|
ascli config image https://eudemo.asperademo.com/wallpaper.jpg --ui=text --image=@json:'{"text":true}'
|
|
@@ -2948,38 +3112,47 @@ It is also possible to force the graphical mode with option `--ui` :
|
|
|
2948
3112
|
### Logging, Debugging
|
|
2949
3113
|
|
|
2950
3114
|
The gem is equipped with traces, mainly for debugging and learning APIs.
|
|
3115
|
+
The following options control logging:
|
|
3116
|
+
|
|
3117
|
+
| Option | Values | Description |
|
|
3118
|
+
|---------------|--------|-------------------------------------------------------------------------|
|
|
3119
|
+
| `logger` | `stdout`<br/>`stderr`<br/>`syslog` | Type of output.<br/>Default: `stderr` |
|
|
3120
|
+
| `log_level` | `trace2`<br/>`trace1`<br/>`debug`<br/>`info`<br/>`warn`<br/>`error` | Minimum level displayed.<br/>Default: `warn` |
|
|
3121
|
+
| `log_secrets` | `yes`<br/>`no` | Show or hide secrets in logs.<br/>Default: `no` (Hide) |
|
|
3122
|
+
| `log_format` | `Proc`<br/>`String` | The name of a formatter or a lambda function that formats the log (see below).<br/>Default: `default`<br/>Alternative: `standard` |
|
|
3123
|
+
|
|
3124
|
+
Option `logger` defines the destination of logs.
|
|
3125
|
+
|
|
3126
|
+
#### `log_level` and `log_secrets`
|
|
2951
3127
|
|
|
2952
3128
|
To increase debug level, use option `log_level` (e.g. using command line `--log-level=xx`, env var `ASCLI_LOG_LEVEL`, or an [Option Preset](#option-preset)).
|
|
2953
3129
|
|
|
2954
3130
|
> [!NOTE]
|
|
2955
|
-
> When using the `direct` agent (`ascp`), additional transfer logs can be activated using `ascp` options and `ascp_args`, see [`direct`](#agent-direct).
|
|
3131
|
+
> When using the `direct` agent (`ascp`), additional transfer logs from `ascp` can be activated using `ascp` options and `ascp_args`, see [`direct`](#agent-direct).
|
|
2956
3132
|
|
|
2957
3133
|
By default, passwords and secrets are redacted from logs.
|
|
2958
3134
|
Set option `log_secrets` to `yes` to include secrets in logs.
|
|
2959
3135
|
|
|
2960
|
-
|
|
2961
|
-
|---------------|--------|-------------|
|
|
2962
|
-
| `logger` | `stdout`<br/>`stderr`<br/>`syslog` | Type of output.<br/>Default: `stderr` |
|
|
2963
|
-
| `log_level` | `trace2`<br/>`trace1`<br/>`debug`<br/>`info`<br/>`warn`<br/>`error` | Minimum level displayed.<br/>Default: `warn` |
|
|
2964
|
-
| `log_secrets` | `yes`<br/>`no` | Show or hide secrets in logs.<br/>Default: `no` (Hide) |
|
|
2965
|
-
| `log_format` | `Proc`<br/>`String` | The name of a formatter or a lambda function that formats the log (see below).<br/>Default: `default`<br/>Alternative: `standard` |
|
|
3136
|
+
#### `log_format`
|
|
2966
3137
|
|
|
2967
|
-
Option `log_format`
|
|
2968
|
-
|
|
3138
|
+
Option `log_format` support a few pre-defined formatters or a custom one using `@ruby:`.
|
|
3139
|
+
A customer formatter is a lambda that takes 4 arguments, see: [Ruby Formatter](https://github.com/ruby/logger/blob/master/lib/logger/formatter.rb) : `severity`, `time`, `progname`, `msg`.
|
|
2969
3140
|
The default formatter is:
|
|
2970
3141
|
|
|
2971
3142
|
```ruby
|
|
2972
|
-
->(s, _d, _p, m){"#{s[0..2]} #{m}\n"}
|
|
3143
|
+
->(s, _d, _p, m){"#{s[0..2]}#{s[-1]} #{m}\n"}
|
|
2973
3144
|
```
|
|
2974
3145
|
|
|
2975
|
-
|
|
3146
|
+
Available formatters for `log_format`:
|
|
2976
3147
|
|
|
2977
|
-
| Name | Description
|
|
2978
|
-
|
|
2979
|
-
| `default` | Default formatter.
|
|
2980
|
-
| `standard`| Standard Ruby formatter.
|
|
3148
|
+
| Name | Description |
|
|
3149
|
+
|-----------|----------------------------------------------------------------------------------|
|
|
3150
|
+
| `default` | Default formatter: Colorized 4 level level followed by message on the same line. |
|
|
3151
|
+
| `standard`| Standard Ruby formatter. |
|
|
3152
|
+
| `caller` | Colorized 4 level level followed by caller, and then on next line: message. |
|
|
3153
|
+
| `Proc` | Custom lambda. |
|
|
2981
3154
|
|
|
2982
|
-
|
|
3155
|
+
#### Logging examples
|
|
2983
3156
|
|
|
2984
3157
|
- Display debugging log on `stdout`:
|
|
2985
3158
|
|
|
@@ -3020,20 +3193,22 @@ To disable this warning, set the option `warn_insecure` to `no`.
|
|
|
3020
3193
|
|
|
3021
3194
|
HTTP connection parameters (not `ascp` WSS) can be adjusted using option `http_options`:
|
|
3022
3195
|
|
|
3023
|
-
| Parameter | Type | Default | Handler
|
|
3024
|
-
|
|
3025
|
-
| `read_timeout` | `Integer` | `60` | Ruby
|
|
3026
|
-
| `write_timeout` | `Integer` | `60` | Ruby
|
|
3027
|
-
| `open_timeout` | `Integer` | `60` | Ruby
|
|
3028
|
-
| `keep_alive_timeout` | `Integer` | `2` | Ruby
|
|
3029
|
-
| `ssl_options` | `Array` | See below | Ruby
|
|
3030
|
-
| `user_agent` | `Integer` | `ascli` | `ascli` |
|
|
3031
|
-
| `download_partial_suffix` | `Integer` | `.http_partial` | `ascli` |
|
|
3032
|
-
| `retry_on_error` | `Bool` | `false` | `ascli` |
|
|
3033
|
-
| `retry_on_timeout` | `Bool` | `true` | `ascli` |
|
|
3034
|
-
| `retry_on_unavailable` | `Bool` | `true` | `ascli` |
|
|
3035
|
-
| `retry_max` | `Integer` | `1` | `ascli` |
|
|
3036
|
-
| `retry_sleep` | `Integer` | `4` | `ascli` |
|
|
3196
|
+
| Parameter | Type | Default | Handler |
|
|
3197
|
+
|-------------------------|---------|---------------|---------------|
|
|
3198
|
+
| `read_timeout` | `Integer` | `60` | Ruby |
|
|
3199
|
+
| `write_timeout` | `Integer` | `60` | Ruby |
|
|
3200
|
+
| `open_timeout` | `Integer` | `60` | Ruby |
|
|
3201
|
+
| `keep_alive_timeout` | `Integer` | `2` | Ruby |
|
|
3202
|
+
| `ssl_options` | `Array` | See below | Ruby |
|
|
3203
|
+
| `user_agent` | `Integer` | `ascli` | `ascli` Rest |
|
|
3204
|
+
| `download_partial_suffix` | `Integer` | `.http_partial` | `ascli` Rest |
|
|
3205
|
+
| `retry_on_error` | `Bool` | `false` | `ascli` Rest |
|
|
3206
|
+
| `retry_on_timeout` | `Bool` | `true` | `ascli` Rest |
|
|
3207
|
+
| `retry_on_unavailable` | `Bool` | `true` | `ascli` Rest |
|
|
3208
|
+
| `retry_max` | `Integer` | `1` | `ascli` Rest |
|
|
3209
|
+
| `retry_sleep` | `Integer` | `4` | `ascli` Rest |
|
|
3210
|
+
| `token_cache_max_age` | `Integer` | `1800` | `ascli` OAuth |
|
|
3211
|
+
| `token_refresh_threshold` | `Integer` | `120` | `ascli` OAuth |
|
|
3037
3212
|
|
|
3038
3213
|
Time values are in set **seconds** and can be of type either `Integer` or `Float`.
|
|
3039
3214
|
Default values are the ones of Ruby:
|
|
@@ -3047,11 +3222,11 @@ Example:
|
|
|
3047
3222
|
ascli aoc admin package list --http-options=@json:'{"read_timeout":10.0}'
|
|
3048
3223
|
```
|
|
3049
3224
|
|
|
3050
|
-
`ssl_options` corresponds to a list of options as listed in `man SSL_CTX_set_options`.
|
|
3225
|
+
The option `ssl_options` corresponds to a list of options as listed in `man SSL_CTX_set_options`.
|
|
3051
3226
|
The default initial value is the default of Ruby as specified in `openssl/ssl.rb`.
|
|
3052
3227
|
Each option can be specified as a `String` with the same name as in the OpenSSL library by removing the prefix: `SSL_OP_`, or an `Integer` (e.g. `0` resets to no option).
|
|
3053
3228
|
If the name appears in the list, the option is set.
|
|
3054
|
-
If the name appears in the list prefixed with a hyphen (`-`), the option is
|
|
3229
|
+
If the name appears in the list prefixed with a hyphen (`-`), the option is cleared.
|
|
3055
3230
|
For example to enable option `SSL_OP_CIPHER_SERVER_PREFERENCE`, add it to the list as `CIPHER_SERVER_PREFERENCE`.
|
|
3056
3231
|
To disable option `SSL_OP_SAFARI_ECDHE_ECDSA_BUG`, add it as `-SAFARI_ECDHE_ECDSA_BUG`.
|
|
3057
3232
|
|
|
@@ -3116,7 +3291,7 @@ ascli config proxy_check --fpac='function FindProxyForURL(url, host) {return "PR
|
|
|
3116
3291
|
```
|
|
3117
3292
|
|
|
3118
3293
|
```text
|
|
3119
|
-
PROXY proxy.example.com:
|
|
3294
|
+
PROXY proxy.example.com:8080;DIRECT
|
|
3120
3295
|
```
|
|
3121
3296
|
|
|
3122
3297
|
```shell
|
|
@@ -3175,11 +3350,6 @@ This is the reason why it is advised to install the Aspera Transfer Daemon durin
|
|
|
3175
3350
|
|
|
3176
3351
|
By default, `ascli` uses the `ascp` binary found in **well known locations**, i.e. typical Aspera product installation paths.
|
|
3177
3352
|
|
|
3178
|
-
The way to specify the location of `ascp` is to use either options:
|
|
3179
|
-
|
|
3180
|
-
- `ascp_path`
|
|
3181
|
-
- `use_product`
|
|
3182
|
-
|
|
3183
3353
|
The `config` plugin allows finding and specifying the location of `ascp`.
|
|
3184
3354
|
It provides the following commands for `ascp` sub-command:
|
|
3185
3355
|
|
|
@@ -3188,32 +3358,11 @@ It provides the following commands for `ascp` sub-command:
|
|
|
3188
3358
|
- `products` : list Aspera transfer products available locally
|
|
3189
3359
|
- `connect` : list and download connect client versions available on internet
|
|
3190
3360
|
|
|
3191
|
-
#### Show path of currently used `ascp`
|
|
3192
|
-
|
|
3193
|
-
```shell
|
|
3194
|
-
ascli config ascp show
|
|
3195
|
-
```
|
|
3196
|
-
|
|
3197
|
-
```text
|
|
3198
|
-
/Users/laurent/.aspera/ascli/sdk/ascp
|
|
3199
|
-
```
|
|
3200
|
-
|
|
3201
|
-
```shell
|
|
3202
|
-
ascli config ascp info
|
|
3203
|
-
```
|
|
3204
|
-
|
|
3205
|
-
```text
|
|
3206
|
-
╭─────────┬──────────────────────────────────────────────────╮
|
|
3207
|
-
│ field │ value │
|
|
3208
|
-
╞═════════╪══════════════════════════════════════════════════╡
|
|
3209
|
-
│ ascp │ /Users/john/.aspera/sdk/ascp │
|
|
3210
|
-
...
|
|
3211
|
-
╰─────────┴──────────────────────────────────────────────────╯
|
|
3212
|
-
```
|
|
3213
|
-
|
|
3214
3361
|
#### Selection of `ascp` location for [`direct`](#agent-direct) agent
|
|
3215
3362
|
|
|
3216
|
-
|
|
3363
|
+
Option: `ascp_path` is used to specify the location of `ascp`.
|
|
3364
|
+
The default value is: `product:FIRST`.
|
|
3365
|
+
By default, `ascli` uses any found local product with `ascp`, including Transfer Daemon (SDK).
|
|
3217
3366
|
|
|
3218
3367
|
To override and use an alternate `ascp` path use option `ascp_path` (`--ascp-path=`)
|
|
3219
3368
|
|
|
@@ -3245,10 +3394,9 @@ Saved to default global preset global_common_defaults
|
|
|
3245
3394
|
|
|
3246
3395
|
If the path has spaces, read section: [Shell and Command line parsing](#command-line-parsing-special-characters).
|
|
3247
3396
|
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
this is equivalent to using option: `--use-product=FIRST`.
|
|
3397
|
+
A special value `product:<product name>` can be used for option `ascp_path`.
|
|
3398
|
+
It specifies to use `ascp` from the given product name.
|
|
3399
|
+
A special valuefor product name is `FIRST`, which means: use the first found.
|
|
3252
3400
|
|
|
3253
3401
|
Locally installed Aspera products can be listed with:
|
|
3254
3402
|
|
|
@@ -3267,13 +3415,42 @@ ascli config ascp products list
|
|
|
3267
3415
|
+---------------------------------------+----------------------------------------+
|
|
3268
3416
|
```
|
|
3269
3417
|
|
|
3270
|
-
Using the option `use_product` finds the `ascp` binary of the selected product.
|
|
3271
|
-
|
|
3272
3418
|
To permanently use the `ascp` of a product:
|
|
3273
3419
|
|
|
3274
3420
|
```shell
|
|
3275
|
-
ascli config ascp products use 'Aspera Connect'
|
|
3276
|
-
|
|
3421
|
+
ascli config ascp products use 'IBM Aspera Connect'
|
|
3422
|
+
Updated: default: config <- global_common_defaults
|
|
3423
|
+
Updated: global_common_defaults: ascp_path <- product:IBM Aspera Connect
|
|
3424
|
+
Saving config file.
|
|
3425
|
+
```
|
|
3426
|
+
|
|
3427
|
+
It is the same as executing:
|
|
3428
|
+
|
|
3429
|
+
```shell
|
|
3430
|
+
ascli config preset set GLOBAL ascp_path 'product:IBM Aspera Connect'
|
|
3431
|
+
```
|
|
3432
|
+
|
|
3433
|
+
To show the path of currently used `ascp`:
|
|
3434
|
+
|
|
3435
|
+
```shell
|
|
3436
|
+
ascli config ascp show
|
|
3437
|
+
```
|
|
3438
|
+
|
|
3439
|
+
```text
|
|
3440
|
+
/Users/laurent/.aspera/ascli/sdk/ascp
|
|
3441
|
+
```
|
|
3442
|
+
|
|
3443
|
+
```shell
|
|
3444
|
+
ascli config ascp info
|
|
3445
|
+
```
|
|
3446
|
+
|
|
3447
|
+
```text
|
|
3448
|
+
╭─────────┬──────────────────────────────────────────────────╮
|
|
3449
|
+
│ field │ value │
|
|
3450
|
+
╞═════════╪══════════════════════════════════════════════════╡
|
|
3451
|
+
│ ascp │ /Users/john/.aspera/sdk/ascp │
|
|
3452
|
+
...
|
|
3453
|
+
╰─────────┴──────────────────────────────────────────────────╯
|
|
3277
3454
|
```
|
|
3278
3455
|
|
|
3279
3456
|
#### Installation of Connect Client on command line
|
|
@@ -3326,8 +3503,8 @@ Transfers will be executed by a transfer client, here called **Transfer Agent**.
|
|
|
3326
3503
|
|
|
3327
3504
|
The following agents are supported and selected with option `transfer`:
|
|
3328
3505
|
|
|
3329
|
-
| `transfer`
|
|
3330
|
-
|
|
3506
|
+
| `transfer` | location | Description of agent |
|
|
3507
|
+
|----------|----------|-------------------------------|
|
|
3331
3508
|
| [`direct`](#agent-direct) | local | direct execution of `ascp` |
|
|
3332
3509
|
| [`transferd`](#agent-transfer-daemon) | local | Aspera Transfer Daemon |
|
|
3333
3510
|
| [`connect`](#agent-connect-client) | local | Aspera Connect Client |
|
|
@@ -3354,14 +3531,16 @@ This is the default agent for `ascli` (option `--transfer=direct`).
|
|
|
3354
3531
|
`ascli` will locally search installed Aspera products, including SDK, and use `ascp` from that component.
|
|
3355
3532
|
Refer to section [FASP](#fasp-configuration).
|
|
3356
3533
|
|
|
3534
|
+
##### Agent: Direct: `transfer_info`
|
|
3535
|
+
|
|
3357
3536
|
The `transfer_info` option accepts the following optional parameters to control multi-session, Web Socket Session, Resume policy and add any argument to `ascp`:
|
|
3358
3537
|
|
|
3359
|
-
| Name | Type
|
|
3360
|
-
|
|
3538
|
+
| Name | Type | Description |
|
|
3539
|
+
|------------------------|-----------|-----------------------------------------------------------------------------|
|
|
3361
3540
|
| `wss` | `Bool` | Web Socket Session<br/>Enable use of web socket session in case it is available<br/>Default: `true` |
|
|
3362
3541
|
| `quiet` | `Bool` | If `true`, then `ascp` progress bar is not shown.<br/>Default: `false` |
|
|
3363
3542
|
| `trusted_certs` | `Array` | List of repositories for trusted certificates. |
|
|
3364
|
-
| `client_ssh_key` | `String`
|
|
3543
|
+
| `client_ssh_key` | `String` | SSH Keys to use for token-based transfers.<br/>One of: `dsa_rsa`, `rsa`, `per_client`.<br/>Default: `rsa` |
|
|
3365
3544
|
| `ascp_args` | `Array` | `Array` of strings with native `ascp` arguments.<br/>Default: `[]` |
|
|
3366
3545
|
| `spawn_timeout_sec` | `Float` | Multi session<br/>Verification time that `ascp` is running<br/>Default: `3` |
|
|
3367
3546
|
| `spawn_delay_sec` | `Float` | Multi session<br/>Delay between startup of sessions<br/>Default: `2` |
|
|
@@ -3380,14 +3559,26 @@ Sleep between iterations is given by the following formula where `iter_index` is
|
|
|
3380
3559
|
max( sleep_max, sleep_initial * sleep_factor ^ iter_index )
|
|
3381
3560
|
```
|
|
3382
3561
|
|
|
3383
|
-
To display the native progress bar of `ascp`, use
|
|
3562
|
+
To display the native progress bar of `ascp`, use:
|
|
3563
|
+
|
|
3564
|
+
```shell
|
|
3565
|
+
--progress-bar=no --transfer-info=@json:'{"quiet":false}'`
|
|
3566
|
+
```
|
|
3384
3567
|
|
|
3385
3568
|
To skip usage of management port (which disables custom progress bar), set option `monitor` to `false`.
|
|
3386
|
-
In that, use the native progress bar:
|
|
3569
|
+
In that, use the native progress bar:
|
|
3570
|
+
|
|
3571
|
+
```shell
|
|
3572
|
+
--transfer-info=@json:'{"monitor":false,"quiet":false}'`
|
|
3573
|
+
```
|
|
3387
3574
|
|
|
3388
3575
|
By default, Ruby's root CA store is used to validate any HTTPS endpoint used by `ascp` (e.g. WSS).
|
|
3389
3576
|
In order to use a custom certificate store, use the `trusted_certs` option of direct agent's option `transfer_info`.
|
|
3390
|
-
To use `ascp`'s default, use option:
|
|
3577
|
+
To use `ascp`'s default, use option:
|
|
3578
|
+
|
|
3579
|
+
```shell
|
|
3580
|
+
--transfer-info=@json:'{"trusted_certs":null}'`.
|
|
3581
|
+
```
|
|
3391
3582
|
|
|
3392
3583
|
Some transfer errors are considered **retry-able** (e.g. timeout) and some other not (e.g. wrong password).
|
|
3393
3584
|
The list of known protocol errors and retry level can be listed:
|
|
@@ -3434,6 +3625,36 @@ In addition to standard methods described in section [File List](#list-of-files-
|
|
|
3434
3625
|
> [!NOTE]
|
|
3435
3626
|
> Those methods have limitations: they apply **only** to the [`direct`](#agent-direct) transfer agent (i.e. local `ascp`) and not for Aspera on Cloud.
|
|
3436
3627
|
|
|
3628
|
+
##### Agent: Direct: Management messages
|
|
3629
|
+
|
|
3630
|
+
By default, `ascli` gets notification from `ascp` on its management port.
|
|
3631
|
+
This can be de-activated with parameter: `monitor=false` of `transfer_info`.
|
|
3632
|
+
|
|
3633
|
+
It is also possible to send local messages to this management port.
|
|
3634
|
+
A typical use is to change the target rate of a running transfer.
|
|
3635
|
+
|
|
3636
|
+
The communication is done through a flat JSON file that shall be created in `ascli` config folder as displayed with:
|
|
3637
|
+
|
|
3638
|
+
```shell
|
|
3639
|
+
ascli config folder
|
|
3640
|
+
```
|
|
3641
|
+
|
|
3642
|
+
The name of the file shall be: `send_<PID>`, where `<PID>` is the process id of the running `ascli`.
|
|
3643
|
+
|
|
3644
|
+
If there is only one `ascli` running, one can get the PID like this:
|
|
3645
|
+
|
|
3646
|
+
```shell
|
|
3647
|
+
ps -axo pid,command|grep ascli|grep -v grep|cut -f1 -d' '
|
|
3648
|
+
```
|
|
3649
|
+
|
|
3650
|
+
Example to change the target rate:
|
|
3651
|
+
|
|
3652
|
+
```shell
|
|
3653
|
+
echo '{"type":"RATE","Rate":300000}' > ~/.aspera/ascli/send_67470
|
|
3654
|
+
```
|
|
3655
|
+
|
|
3656
|
+
When `ascli` detects this file, it uses it during a transfer and then deletes it.
|
|
3657
|
+
|
|
3437
3658
|
##### Agent: Direct: `aspera.conf`: Virtual Links
|
|
3438
3659
|
|
|
3439
3660
|
This agent supports a local configuration file: `aspera.conf` where Virtual links can be configured:
|
|
@@ -3610,11 +3831,11 @@ By specifying option: `--transfer=httpgw`, `ascli` will start transfers using th
|
|
|
3610
3831
|
|
|
3611
3832
|
Parameters provided in option `transfer_info` are:
|
|
3612
3833
|
|
|
3613
|
-
| Name | Type | Description
|
|
3614
|
-
|
|
3615
|
-
| `url` | `String` | URL of the HTTP GW<br/>Mandatory
|
|
3834
|
+
| Name | Type | Description |
|
|
3835
|
+
|---------------------|-----------|-----------------------------------------------------------|
|
|
3836
|
+
| `url` | `String` | URL of the HTTP GW<br/>Mandatory |
|
|
3616
3837
|
| `upload_chunk_size` | `Integer` | Size in bytes of chunks for upload<br/>Default: `64000` |
|
|
3617
|
-
| `api_version` | `String` | Force use of version (`v1`, `v2`)<br/>Default: `v2`
|
|
3838
|
+
| `api_version` | `String` | Force use of version (`v1`, `v2`)<br/>Default: `v2` |
|
|
3618
3839
|
| `synchronous` | `Bool` | Wait for each message acknowledgment<br/>Default: `false` |
|
|
3619
3840
|
|
|
3620
3841
|
Example:
|
|
@@ -3635,8 +3856,8 @@ Set option `transfer` to `transferd`.
|
|
|
3635
3856
|
|
|
3636
3857
|
Options for `transfer_info` are:
|
|
3637
3858
|
|
|
3638
|
-
| Name | Type | Description
|
|
3639
|
-
|
|
3859
|
+
| Name | Type | Description |
|
|
3860
|
+
|----------|----------|----------------------------------------------|
|
|
3640
3861
|
| `url` | `String` | IP address and port listened by the daemon<br/>Mandatory<br/>Default: `:0` |
|
|
3641
3862
|
| `start` | `Bool` | Start a new daemon.<br/>Default: `true` |
|
|
3642
3863
|
| `stop` | `Bool` | Stop daemon when exiting `ascli`<br/>Default: `true` |
|
|
@@ -3672,7 +3893,7 @@ On Windows the compilation may fail for various reasons (3.1.1):
|
|
|
3672
3893
|
|
|
3673
3894
|
- `cannot find -lx64-ucrt-ruby310`
|
|
3674
3895
|
|
|
3675
|
-
→ copy the file `[Ruby main dir]\lib\libx64-ucrt-ruby310.dll.a` to `[Ruby main dir]\lib\libx64-ucrt-ruby310.a`
|
|
3896
|
+
→ copy the file `[Ruby main dir]\lib\libx64-ucrt-ruby310.dll.a` to (remove the `dll` extension) `[Ruby main dir]\lib\libx64-ucrt-ruby310.a`
|
|
3676
3897
|
|
|
3677
3898
|
- `conflicting types for 'gettimeofday'`
|
|
3678
3899
|
|
|
@@ -3715,7 +3936,7 @@ The use of a [**transfer-spec**](#transfer-specification) instead of `ascp` comm
|
|
|
3715
3936
|
- Common to all [Transfer Agent](#transfer-clients-agents)
|
|
3716
3937
|
- Not dependent on command line limitations (special characters...)
|
|
3717
3938
|
|
|
3718
|
-
|
|
3939
|
+
#### Transfer Parameters
|
|
3719
3940
|
|
|
3720
3941
|
All standard [**transfer-spec**](#transfer-specification) parameters can be specified.
|
|
3721
3942
|
A [**transfer-spec**](#transfer-specification) can also be saved/overridden in the configuration file.
|
|
@@ -3747,8 +3968,10 @@ ascli config ascp schema transferd --format=jsonpp
|
|
|
3747
3968
|
|
|
3748
3969
|
`ascp` argument or environment variable is provided in description.
|
|
3749
3970
|
|
|
3971
|
+
#### Transfer Specification Reference
|
|
3972
|
+
|
|
3750
3973
|
| ID | Name |
|
|
3751
|
-
|
|
3974
|
+
|----|-----------|
|
|
3752
3975
|
| A | Direct |
|
|
3753
3976
|
| C | Connect |
|
|
3754
3977
|
| D | Desktop |
|
|
@@ -3757,17 +3980,17 @@ ascli config ascp schema transferd --format=jsonpp
|
|
|
3757
3980
|
| T | Transferd |
|
|
3758
3981
|
|
|
3759
3982
|
| Field | Type | Description |
|
|
3760
|
-
|
|
3983
|
+
|--------------------------------|---------|----------------------------------------------------------------------------------|
|
|
3761
3984
|
| apply_local_docroot | boolean | Apply local docroot to source paths.<br/>(A, T)<br/>(`--apply-local-docroot`) |
|
|
3762
3985
|
| authentication | string | Set to `token` for SSH bypass keys, else password asked if not provided.<br/>(C) |
|
|
3763
3986
|
| cipher | string | In transit encryption algorithms.<br/>Allowed values: `none`, `aes-128`, `aes-192`, `aes-256`, `aes-128-cfb`, `aes-192-cfb`, `aes-256-cfb`, `aes-128-gcm`, `aes-192-gcm`, `aes-256-gcm`<br/>(`-c (conversion){enum}`) |
|
|
3764
|
-
| cipher_allowed | string | Returned by node API. Valid literals include `aes-128` and `none`.<br/>(C) |
|
|
3765
|
-
| content_protection | string | Enable client-side encryption
|
|
3766
|
-
| content_protection_password | string |
|
|
3987
|
+
| cipher_allowed | string | Returned by node API. Valid literals include `aes-128` and `none`.<br/>(C)<br/>Allowed values: `none`, `aes-128`, `aes-192`, `aes-256`, `aes-128-cfb`, `aes-192-cfb`, `aes-256-cfb`, `aes-128-gcm`, `aes-192-gcm`, `aes-256-gcm` |
|
|
3988
|
+
| content_protection | string | Enable client-side content protection (CSEAR, encryption-at-rest).<br/>For uploads, set to `encrypt` to transfer encrypted files and store them on the server with the extension `.aspera-env`. (`aspera.conf` parameter `transfer_encryption_content_protection_extension`). To download and decrypt encrypted files, set to `decrypt`<br/>`content_protection_password` must be specified if this option is set.<br/>Allowed values: `encrypt`, `decrypt`<br/>(`--file-crypt={enum}`) |
|
|
3989
|
+
| content_protection_password | string | Password for encryption/decryption of transferred assets.<br/>(env:`ASPERA_SCP_FILEPASS`) |
|
|
3767
3990
|
| cookie | string | Metadata for transfer specified by application.<br/>(env:`ASPERA_SCP_COOKIE`) |
|
|
3768
|
-
| create_dir | boolean |
|
|
3991
|
+
| create_dir | boolean | Create target directory if it doesn't already exist.<br/>If **all** the following conditions are met, then the `destination_root` specifies a filename instead of destination folder:<br/>- `create_dir` is `false`<br/>- A single source file is given on **command line**<br/>- The target folder specified by `destination_root` does not exist<br/>In all other cases, `destination_root` specifies a folder, and it is created if it does not already exist. I.e. if **any** of those conditions is met:<br/>- `create_dir` is `true`<br/>- Multiple source files are provided<br/>- List of source files are provided in a file (list or pair), default for Node API and `ascli`.<br/>- The target folder exists<br/>(`-d`) |
|
|
3769
3992
|
| delete_before_transfer | boolean | Before transfer, delete files that exist at the destination but not at the source.<br/>The source and destination arguments must be directories that have matching names.<br/>Objects on the destination that have the same name but different type or size as objects on the source are not deleted.<br/>(`--delete-before-transfer`) |
|
|
3770
|
-
| delete_source | boolean | Remove transfered source files after transfer success.
|
|
3993
|
+
| delete_source | boolean | Remove transfered source files after transfer success. Equivalent to `remove_after_transfer` + `remove_empty_directories` + `remove_empty_source_directory`. Take precedence over those.<br/>(A, N, T) |
|
|
3771
3994
|
| destination_root | string | Destination root directory. |
|
|
3772
3995
|
| destination_root_id | string | The file ID of the destination root directory.<br/>Required when using Bearer token auth for the destination node.<br/>(T) |
|
|
3773
3996
|
| dgram_size | integer | UDP datagram size in bytes.<br/>(`-Z {integer}`) |
|
|
@@ -3783,16 +4006,16 @@ ascli config ascp schema transferd --format=jsonpp
|
|
|
3783
4006
|
| https_fallback_port | integer | Specifies HTTPS port when cipher is used.<br/>(`-t {integer}`) |
|
|
3784
4007
|
| icos | object | Configuration parameters for IBM Cloud Object Storage (ICOS).<br/>(T) |
|
|
3785
4008
|
| keepalive | boolean | The session is running in persistent session mode.<br/>(A, T)<br/>(`--keepalive`) |
|
|
3786
|
-
| lock_min_rate | boolean |
|
|
4009
|
+
| lock_min_rate | boolean | n/a<br/>(C) |
|
|
3787
4010
|
| lock_min_rate_kbps | boolean | If `true`, lock the minimum transfer rate to the value set for min_rate_kbps.<br/>If `false`, users can adjust the transfer rate up to the value set for target_rate_cap_kbps.<br/>(C, T) |
|
|
3788
4011
|
| lock_rate_policy | boolean | If `true`, lock the rate policy to the default value.<br/>(C, T) |
|
|
3789
|
-
| lock_target_rate | boolean |
|
|
3790
|
-
| lock_target_rate_kbps | boolean | If `true`, lock the target transfer rate to the default value set for target_rate_kbps
|
|
4012
|
+
| lock_target_rate | boolean | n/a<br/>(C) |
|
|
4013
|
+
| lock_target_rate_kbps | boolean | If `true`, lock the target transfer rate to the default value set for `target_rate_kbps`.<br/>If `false`, users can adjust the transfer rate up to the value set for `target_rate_cap_kbps`.<br/>(C, T) |
|
|
3791
4014
|
| min_rate_cap_kbps | integer | The highest minimum rate that an incoming transfer can request, in kilobits per second.<br/>Client minimum rate requests that exceed the minimum rate cap are ignored.<br/>The default value of unlimited applies no cap to the minimum rate. (Default: 0)<br/>(C, T) |
|
|
3792
4015
|
| min_rate_kbps | integer | Set the minimum transfer rate in kilobits per second.<br/>(`-m {integer}`) |
|
|
3793
|
-
| move_after_transfer | string | Move source files to the specified `archive-dir` directory after they are transferred correctly.<br/>Available as of 3.8.0. Details in ascp manual.<br/>Requires write permissions on the source.<br/>If `src_base` is specified, files are moved to `archive-dir`/`path-relative-to-srcbase`.<br/>`archive-dir` must be in the same file system (or cloud storage account) as the source files being transferred.<br/>`archive-dir` is subject to the same docroot restrictions as source files.<br/>`move_after_transfer` and `remove_after_transfer` are mutually exclusive options.<br/>After files have been moved to the archive, the original source directory structure is left in place. Empty directories are not saved to `archive-dir`. To remove empty source directories after a successful move operation, also set `remove_empty_directories` to `true`. When using `remove_empty_directories`, empty directory removal examination starts at the `srcbase` and proceeds down any subdirectories. If no `srcbase` is used and a file path (as opposed to a directory path) is specified, then only the immediate parent directory is examined and removed if it is empty following the move of the source file.<br/>(A, N, T)<br/>(`--move-after-transfer={string}`) |
|
|
3794
|
-
| multi_session | integer | Use multi-session transfer. max 128.<br/>Each participant on one host needs an independent UDP (-O) port.<br/>Large files are split between sessions only when transferring with `resume_policy`=`none
|
|
3795
|
-
| multi_session_threshold | integer | Split files across multiple ascp sessions if their size in bytes is greater than or equal to the specified value.<br/>(0=no file is split)<br/>(A, N, T)<br/>(`--multi-session-threshold={integer}`) |
|
|
4016
|
+
| move_after_transfer | string | Move source files to the specified `archive-dir` directory after they are transferred correctly.<br/>Available as of 3.8.0. Details in `ascp` manual.<br/>Requires write permissions on the source.<br/>If `src_base` is specified, files are moved to `archive-dir`/`path-relative-to-srcbase`.<br/>`archive-dir` must be in the same file system (or cloud storage account) as the source files being transferred.<br/>`archive-dir` is subject to the same docroot restrictions as source files.<br/>`move_after_transfer` and `remove_after_transfer` are mutually exclusive options.<br/>After files have been moved to the archive, the original source directory structure is left in place. Empty directories are not saved to `archive-dir`. To remove empty source directories after a successful move operation, also set `remove_empty_directories` to `true`. When using `remove_empty_directories`, empty directory removal examination starts at the `srcbase` and proceeds down any subdirectories. If no `srcbase` is used and a file path (as opposed to a directory path) is specified, then only the immediate parent directory is examined and removed if it is empty following the move of the source file.<br/>(A, N, T)<br/>(`--move-after-transfer={string}`) |
|
|
4017
|
+
| multi_session | integer | Use multi-session transfer. max 128.<br/>Each participant on one host needs an independent UDP (-O) port.<br/>Large files are split between sessions only when transferring with `resume_policy`=`none`.<br/>(special:`-C {integer}`) |
|
|
4018
|
+
| multi_session_threshold | integer | Split files across multiple `ascp` sessions if their size in bytes is greater than or equal to the specified value.<br/>(0=no file is split)<br/>(A, N, T)<br/>(`--multi-session-threshold={integer}`) |
|
|
3796
4019
|
| obfuscate_file_names | boolean | HTTP Gateway obfuscates file names when set to `true`.<br/>(H) |
|
|
3797
4020
|
| overwrite | string | Overwrite files at the destination with source files of the same name based on the policy:<br/>- `always` : Always overwrite the file.<br/>- `never` : Never overwrite the file. If the destination contains partial files that are older or the same as the source files and resume is enabled, the partial files resume transfer. Partial files with checksums or sizes that differ from the source files are not overwritten.<br/>- `diff` : (default) Overwrite the file if it is different from the source, depending on the compare method (default is size). If the destination is object storage, `diff` has the same effect as always. If resume is not enabled, partial files are overwritten if they are different from the source, otherwise they are skipped. If resume is enabled, only partial files with different sizes or checksums from the source are overwritten; otherwise, files resume.<br/>- `diff+older` : Overwrite the file if it is older and different from the source, depending on the compare method (default is size). If resume is not enabled, partial files are overwritten if they are older and different from the source, otherwise they are skipped. If resume is enabled, only partial files that are different and older than the source are overwritten, otherwise they are resumed.<br/>- `older` : Overwrite the file if its timestamp is older than the source timestamp.<br/>If you set an overwrite policy of `diff` or `diff+older`, difference is determined by the value set for `resume_policy`:<br/>`none` : The source and destination files are always considered different and the destination file is always overwritten<br/>`attributes` : The source and destination files are compared based on file attributes <br/>`sparse_checksum` : The source and destination files are compared based on sparse checksums, (currently file size)<br/>`full_checksum` : The source and destination files are compared based on full checksums<br/>Allowed values: `never`, `always`, `diff`, `older`, `diff+older`<br/>(`--overwrite={enum}`) |
|
|
3798
4021
|
| password | string | Password for local Windows user when transfer user associated with node API user is not the same as the one running `asperanoded`.<br/>Allows impersonating the transfer user and have access to resources (e.g. network shares).<br/>Windows only, node API only.<br/>(N) |
|
|
@@ -3801,7 +4024,7 @@ ascli config ascp schema transferd --format=jsonpp
|
|
|
3801
4024
|
| preserve_access_time | boolean | Preserve the source-file access timestamps at the destination.<br/>Because source access times are updated by the transfer operation, the timestamp that is preserved is the one just before to the transfer.<br/>(`--preserve-access-time`) |
|
|
3802
4025
|
| preserve_acls | string | Preserve access control lists.<br/>(A, T)<br/>Allowed values: `none`, `native`, `metafile`<br/>(`--preserve-acls={enum}`) |
|
|
3803
4026
|
| preserve_creation_time | boolean | Preserve source-file creation timestamps at the destination.<br/>Only Windows systems retain information about creation time. If the destination is not a Windows computer, this option is ignored.<br/>(`--preserve-creation-time`) |
|
|
3804
|
-
| preserve_extended_attrs | string | Preserve the extended attributes.<br/>(
|
|
4027
|
+
| preserve_extended_attrs | string | Preserve the extended attributes.<br/>(A, T)<br/>Allowed values: `none`, `native`, `metafile`<br/>(`--preserve-xattrs={enum}`) |
|
|
3805
4028
|
| preserve_file_owner_gid | boolean | Preserve the group ID for a file owner.<br/>(A, T)<br/>(`--preserve-file-owner-gid`) |
|
|
3806
4029
|
| preserve_file_owner_uid | boolean | Preserve the user ID for a file owner.<br/>(A, T)<br/>(`--preserve-file-owner-uid`) |
|
|
3807
4030
|
| preserve_modification_time | boolean | Set the modification time, the last time a file or directory was modified (written), of a transferred file to the modification of the source file or directory.<br/>Preserve source-file modification timestamps at the destination.<br/>(`--preserve-modification-time`) |
|
|
@@ -3830,9 +4053,9 @@ ascli config ascp schema transferd --format=jsonpp
|
|
|
3830
4053
|
| source_root_id | string | The file ID of the source root directory. Required when using Bearer token auth for the source node.<br/>(N, T) |
|
|
3831
4054
|
| src_base | string | Specify the prefix to be stripped off from each source object.<br/>The remaining portion of the source path is kept intact at the destination.<br/>Special care must be taken when used with cloud storage.<br/>(A, N, T)<br/>(`--src-base64=(conversion){string}`) |
|
|
3832
4055
|
| src_base64 | string | The folder name below which the directory structure is preserved (base64 encoded).<br/>(A, T)<br/>(`--src-base64={string}`) |
|
|
3833
|
-
| ssh_args | array |
|
|
4056
|
+
| ssh_args | array | Add arguments to the command-line arguments passed to the external ssh program (implies -SSH). The arguments are inserted before any key file(s) supplied to `ascp` and before the user/host arguments.<br/>(A, T)<br/>(special:`--ssh-arg={array}`) |
|
|
3834
4057
|
| ssh_port | integer | Specifies SSH (TCP) port.<br/>(`-P {integer}`) |
|
|
3835
|
-
| ssh_private_key | string | Private key used for SSH authentication.<br/>Shall look like: -----BEGIN RSA PRIV4TE KEY
|
|
4058
|
+
| ssh_private_key | string | Private key used for SSH authentication.<br/>Shall look like: -----BEGIN RSA PRIV4TE KEY-----\nMII...<br/>Note the JSON encoding: \n for newlines.<br/>(A, T)<br/>(env:`ASPERA_SCP_KEY`) |
|
|
3836
4059
|
| ssh_private_key_passphrase | string | The passphrase associated with the transfer user's SSH private key. Available as of 3.7.2.<br/>(A, T)<br/>(env:`ASPERA_SCP_PASS`) |
|
|
3837
4060
|
| ssh_private_key_path | string | Path to private key for SSH.<br/>(A, T)<br/>(`-i {string}`) |
|
|
3838
4061
|
| sshfp | string | Check it against server SSH host key fingerprint.<br/>(`--check-sshfp={string}`) |
|
|
@@ -3843,10 +4066,10 @@ ascli config ascp schema transferd --format=jsonpp
|
|
|
3843
4066
|
| target_rate_kbps | integer | Specifies desired speed for the transfer.<br/>(`-l {integer}`) |
|
|
3844
4067
|
| title | string | Title of the transfer.<br/>(C, N, T) |
|
|
3845
4068
|
| token | string | Authorization token. Type: Bearer, Basic or ATM. (Also arg -W)<br/>(env:`ASPERA_SCP_TOKEN`) |
|
|
3846
|
-
| use_ascp4 | boolean | Specify version of protocol. Do not use ascp4
|
|
3847
|
-
| use_system_ssh |
|
|
3848
|
-
| wss_enabled | boolean | Server has Web Socket service enabled
|
|
3849
|
-
| wss_port | integer | TCP port used for
|
|
4069
|
+
| use_ascp4 | boolean | Specify version of protocol. Do not use `ascp4`.<br/>(A, N, T) |
|
|
4070
|
+
| use_system_ssh | boolean | Use an external `ssh` program instead of the built-in `libssh2` implementation to establish the connection to the remote host. The desired `ssh` program must be in the environment's `PATH`.<br/>To enable debugging of the `ssh` process, supply `-DD` and `--ssh-arg=-vv` arguments to `ascp`.<br/>(A, T)<br/>(`-SSH`) |
|
|
4071
|
+
| wss_enabled | boolean | Server has Web Socket service enabled.<br/>(special:`--ws-connect`) |
|
|
4072
|
+
| wss_port | integer | TCP port used for Web Socket service feed. |
|
|
3850
4073
|
| xfer_max_retries | integer | Maximum number of retries, for node API initiated transfers. Shall not exceed aspera.conf `transfer_manager_max_retries` (default 5).<br/>(N) |
|
|
3851
4074
|
|
|
3852
4075
|
#### Destination folder for transfers
|
|
@@ -3955,9 +4178,6 @@ Example: Source file `200KB.1` is renamed `sample1` on destination:
|
|
|
3955
4178
|
ascli server upload --src-type=pair ~/Documents/Samples/200KB.1 /Upload/sample1
|
|
3956
4179
|
```
|
|
3957
4180
|
|
|
3958
|
-
> [!NOTE]
|
|
3959
|
-
> There are some specific rules to specify a file list when using **Aspera on Cloud**, refer to the AoC plugin section.
|
|
3960
|
-
|
|
3961
4181
|
#### Source directory structure on destination
|
|
3962
4182
|
|
|
3963
4183
|
This section is not specific to `ascli` it is `ascp` behavior.
|
|
@@ -3981,18 +4201,18 @@ A leading `/` on destination is ignored (relative to docroot) unless docroot is
|
|
|
3981
4201
|
|
|
3982
4202
|
In the following table source folder `d3` contains 2 files: `f1` and `d4/f2`.
|
|
3983
4203
|
|
|
3984
|
-
| Source files
|
|
3985
|
-
|
|
3986
|
-
| `f1`
|
|
3987
|
-
| `f1`
|
|
3988
|
-
| `f1`
|
|
3989
|
-
| `f1`
|
|
3990
|
-
| `f1` `f2`
|
|
3991
|
-
| `d3`
|
|
3992
|
-
| `f1`
|
|
3993
|
-
| `f1` `f2`
|
|
3994
|
-
| `d1/f1` `d2/f2` | `d`
|
|
3995
|
-
| `d3`
|
|
4204
|
+
| Source files | Destination | Folders on Dest. | `create_dir` | Destination Files |
|
|
4205
|
+
|-----------------|-----|-----|------|-----------------------------------|
|
|
4206
|
+
| `f1` | `d/f` | - | false | Error: `d` does not exist. |
|
|
4207
|
+
| `f1` | `d/f` | `d` | false | `d/f` (renamed) |
|
|
4208
|
+
| `f1` | `d/f/.` | `d` | false | `d/f` (renamed) |
|
|
4209
|
+
| `f1` | `d/f` | `d/f` | false | `d/f/f1` |
|
|
4210
|
+
| `f1` `f2` | `d` | `d` | false | `d/f1` `d/f2` |
|
|
4211
|
+
| `d3` | `d` | - | false | `d/f1` `d/f2` (renamed) |
|
|
4212
|
+
| `f1` | `d` | - | true | `d/f1` |
|
|
4213
|
+
| `f1` `f2` | `d` | - | true | `d/f1` `d/f2` |
|
|
4214
|
+
| `d1/f1` `d2/f2` | `d` | - | true | `d/f1` `d/f2` |
|
|
4215
|
+
| `d3` | `d` | - | true | `d/d3/f1` `d/d3/d4/f2` |
|
|
3996
4216
|
|
|
3997
4217
|
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).
|
|
3998
4218
|
|
|
@@ -4043,8 +4263,13 @@ When multi-session is used, one separate UDP port is used per session (refer to
|
|
|
4043
4263
|
|
|
4044
4264
|
#### Content protection
|
|
4045
4265
|
|
|
4046
|
-
|
|
4047
|
-
|
|
4266
|
+
Content protection (Client-Side Encryption at Rest, CSEAR)) ensures that files remain encrypted while stored on the server.
|
|
4267
|
+
With CSEAR, the client encrypts files during upload and decrypts files during download, using a passphrase known only to the users sharing the files.
|
|
4268
|
+
|
|
4269
|
+
- Upload: Files are encrypted on the client side before being sent to the server.
|
|
4270
|
+
- Download: Files are decrypted on the client side as they are retrieved from the server.
|
|
4271
|
+
|
|
4272
|
+
At all times, files remain encrypted on the server; encryption and decryption occur exclusively on the client side.
|
|
4048
4273
|
|
|
4049
4274
|
Activating CSEAR consists in using transfer spec parameters:
|
|
4050
4275
|
|
|
@@ -4057,6 +4282,11 @@ Example: parameter to download a Faspex package and decrypt on the fly
|
|
|
4057
4282
|
--ts=@json:'{"content_protection":"decrypt","content_protection_password":"my_password_here"}'
|
|
4058
4283
|
```
|
|
4059
4284
|
|
|
4285
|
+
> [!NOTE]
|
|
4286
|
+
> Faspex 5 requires package parameter `ear_enabled` set to `true` for CSEAR.
|
|
4287
|
+
> In that case the transfer spec parameter `content_protection` is automatically set.
|
|
4288
|
+
> `content_protection_password` is then required in all cases.
|
|
4289
|
+
|
|
4060
4290
|
#### Transfer Spec Examples
|
|
4061
4291
|
|
|
4062
4292
|
- Change target rate
|
|
@@ -4102,7 +4332,7 @@ It can be configured:
|
|
|
4102
4332
|
|
|
4103
4333
|
- Using utility [`schtasks.exe`](https://learn.microsoft.com/fr-fr/windows-server/administration/windows-commands/schtasks-create)
|
|
4104
4334
|
|
|
4105
|
-
- Using
|
|
4335
|
+
- Using PowerShell function [`scheduletasks`](https://learn.microsoft.com/en-us/powershell/module/scheduledtasks)
|
|
4106
4336
|
|
|
4107
4337
|
- Using `taskschd.msc` (UI)
|
|
4108
4338
|
|
|
@@ -4306,14 +4536,14 @@ where:
|
|
|
4306
4536
|
- `dirname` is the folder name and can contain `/` to specify a subfolder.
|
|
4307
4537
|
- Supported arguments are:
|
|
4308
4538
|
|
|
4309
|
-
| Name | Type
|
|
4310
|
-
|
|
4311
|
-
| count | int
|
|
4312
|
-
| file | string| Basename for files<br/>Default: `file` |
|
|
4313
|
-
| size | int
|
|
4314
|
-
| inc | int
|
|
4315
|
-
| seq | enum
|
|
4316
|
-
| buf_init | enum
|
|
4539
|
+
| Name | Type | Description |
|
|
4540
|
+
|----------|--------|----------------------------------------------------------------|
|
|
4541
|
+
| count | int | Number of files<br/>Mandatory |
|
|
4542
|
+
| file | string | Basename for files<br/>Default: `file` |
|
|
4543
|
+
| size | int | Size of first file.<br/>Default: 0 |
|
|
4544
|
+
| inc | int | Increment applied to determine next file size<br/>Default: 0 |
|
|
4545
|
+
| seq | enum | Sequence in determining next file size<br/>Values: `random`, `sequential`<br/>Default: `sequential` |
|
|
4546
|
+
| buf_init | enum | How source data is initialized<br/>Option `none` is not allowed for downloads.<br/>Values:`none`, `zero`, `random`<br/>Default:`zero` |
|
|
4317
4547
|
|
|
4318
4548
|
The sequence parameter is applied as follows:
|
|
4319
4549
|
|
|
@@ -4365,7 +4595,7 @@ ascli server upload "faux:///mydir?file=testfile&count=1000&size=1" --to-folder=
|
|
|
4365
4595
|
```text
|
|
4366
4596
|
ascli -h
|
|
4367
4597
|
NAME
|
|
4368
|
-
ascli -- a command line tool for Aspera Applications (v4.
|
|
4598
|
+
ascli -- a command line tool for Aspera Applications (v4.25.0.pre)
|
|
4369
4599
|
|
|
4370
4600
|
SYNOPSIS
|
|
4371
4601
|
ascli COMMANDS [OPTIONS] [ARGS]
|
|
@@ -4387,7 +4617,7 @@ COMMANDS
|
|
|
4387
4617
|
OPTIONS
|
|
4388
4618
|
Options begin with a '-' (minus), and value is provided on command line.
|
|
4389
4619
|
Special values are supported beginning with special prefix @pfx:, where pfx is one of:
|
|
4390
|
-
val, base64, csvt, env, file, uri, json, lines, list, none, path, re, ruby, secret, stdin, stdbin, yaml, zlib, extend, preset, vault
|
|
4620
|
+
val, base64, csvt, env, file, uri, json, lines, list, none, path, re, ruby, secret, stdin, stdbin, yaml, zlib, extend, preset, vault,
|
|
4391
4621
|
Dates format is 'DD-MM-YY HH:MM:SS', or 'now' or '-<num>h'
|
|
4392
4622
|
|
|
4393
4623
|
ARGS
|
|
@@ -4396,11 +4626,10 @@ ARGS
|
|
|
4396
4626
|
OPTIONS: global
|
|
4397
4627
|
--interactive=ENUM Use interactive input of missing params: [no], yes
|
|
4398
4628
|
--ask-options=ENUM Ask even optional options: [no], yes
|
|
4399
|
-
--struct-parser=ENUM Default parser when expected value is a struct: json, ruby
|
|
4400
4629
|
--format=ENUM Output format: text, nagios, ruby, json, jsonpp, yaml, [table], csv, image
|
|
4401
|
-
--output=VALUE Destination for results
|
|
4630
|
+
--output=VALUE Destination for results
|
|
4402
4631
|
--display=ENUM Output only some information: [info], data, error
|
|
4403
|
-
--fields=VALUE Comma separated list of: fields, or ALL, or DEF (
|
|
4632
|
+
--fields=VALUE Comma separated list of: fields, or ALL, or DEF (Array, Regexp, Proc)
|
|
4404
4633
|
--select=VALUE Select only some items in lists: column, value (Hash, Proc)
|
|
4405
4634
|
--table-style=VALUE (Table) Display style (Hash)
|
|
4406
4635
|
--flat-hash=ENUM (Table) Display deep values as additional keys: no, [yes]
|
|
@@ -4414,14 +4643,16 @@ OPTIONS: global
|
|
|
4414
4643
|
--ui=ENUM Method to start browser: text, [graphical]
|
|
4415
4644
|
--invalid-characters=VALUE Replacement character and invalid filename characters
|
|
4416
4645
|
--log-level=ENUM Log level: trace2, trace1, debug, info, [warn], error, fatal, unknown
|
|
4417
|
-
--log-format=VALUE Log formatter (Proc, Logger::Formatter
|
|
4646
|
+
--log-format=VALUE Log formatter (Proc, Logger::Formatter)
|
|
4418
4647
|
--logger=ENUM Logging method: [stderr], stdout, syslog
|
|
4419
4648
|
--lock-port=VALUE Prevent dual execution of a command, e.g. in cron (Integer)
|
|
4420
4649
|
--once-only=ENUM Process only new items (some commands): [no], yes
|
|
4421
4650
|
--log-secrets=ENUM Show passwords in logs: [no], yes
|
|
4422
4651
|
--clean-temp=ENUM Cleanup temporary files on exit: no, [yes]
|
|
4423
|
-
--
|
|
4424
|
-
--
|
|
4652
|
+
--temp-folder=VALUE Temporary folder
|
|
4653
|
+
--pid-file=VALUE Write process identifier to file, delete on exit
|
|
4654
|
+
--parser=ENUM Default parser for structured parameters and options: none, json, ruby, yaml
|
|
4655
|
+
--home=VALUE Home folder for tool
|
|
4425
4656
|
--config-file=VALUE Path to YAML file with preset configuration
|
|
4426
4657
|
--secret=VALUE Secret for access keys
|
|
4427
4658
|
--vault=VALUE Vault for secrets (Hash)
|
|
@@ -4432,17 +4663,15 @@ OPTIONS: global
|
|
|
4432
4663
|
--bfail=ENUM Bulk operation error handling: no, [yes]
|
|
4433
4664
|
-N, --no-default Do not load default configuration for plugin
|
|
4434
4665
|
-P, --presetVALUE Load the named option preset from current config file
|
|
4435
|
-
--version-check-days=VALUE Period in days to check new version (zero to disable)
|
|
4666
|
+
--version-check-days=VALUE Period in days to check new version (zero to disable) (Integer)
|
|
4436
4667
|
--plugin-folder=VALUE Folder where to find additional plugins
|
|
4437
4668
|
--override=ENUM Wizard: override existing value: [no], yes
|
|
4438
4669
|
--default=ENUM Wizard: set as default configuration for specified plugin (also: update): no, [yes]
|
|
4439
|
-
--test-mode=ENUM Wizard: skip private key check step: [no], yes
|
|
4440
4670
|
--key-path=VALUE Wizard: path to private key for JWT
|
|
4441
|
-
--ascp-path=VALUE Ascp: Path to ascp
|
|
4442
|
-
--use-product=VALUE Ascp: Use ascp from specified product
|
|
4443
4671
|
--sdk-url=VALUE Ascp: URL to get Aspera Transfer Executables
|
|
4444
|
-
--
|
|
4445
|
-
--
|
|
4672
|
+
--ascp-path=VALUE Ascp: Path to ascp (or product with "product:")
|
|
4673
|
+
--locations-url=VALUE Ascp: URL to get download locations of Aspera Transfer Daemon
|
|
4674
|
+
--sdk-folder=VALUE Ascp: SDK installation folder path
|
|
4446
4675
|
--progress-bar=ENUM Display progress bar: [no], yes
|
|
4447
4676
|
--smtp=VALUE Email: SMTP configuration (Hash)
|
|
4448
4677
|
--notify-to=VALUE Email: Recipient for notification of transfers
|
|
@@ -4450,9 +4679,9 @@ OPTIONS: global
|
|
|
4450
4679
|
--insecure=ENUM HTTP/S: Do not validate any certificate: [no], yes
|
|
4451
4680
|
--ignore-certificate=VALUE HTTP/S: Do not validate certificate for these URLs (Array)
|
|
4452
4681
|
--warn-insecure=ENUM HTTP/S: Issue a warning if certificate is ignored: no, [yes]
|
|
4453
|
-
--cert-stores=VALUE HTTP/S: List of folder with trusted certificates (Array
|
|
4682
|
+
--cert-stores=VALUE HTTP/S: List of folder with trusted certificates (Array)
|
|
4454
4683
|
--http-options=VALUE HTTP/S: Options for HTTP/S socket (Hash)
|
|
4455
|
-
--http-proxy=VALUE HTTP/S: URL for proxy with optional credentials
|
|
4684
|
+
--http-proxy=VALUE HTTP/S: URL for proxy with optional credentials
|
|
4456
4685
|
--cache-tokens=ENUM Save and reuse OAuth tokens: no, [yes]
|
|
4457
4686
|
--fpac=VALUE Proxy auto configuration script
|
|
4458
4687
|
--proxy-credentials=VALUE HTTP proxy credentials for fpac: user, password (Array)
|
|
@@ -4464,7 +4693,7 @@ OPTIONS: global
|
|
|
4464
4693
|
--transfer-info=VALUE Parameters for transfer agent (Hash)
|
|
4465
4694
|
|
|
4466
4695
|
COMMAND: config
|
|
4467
|
-
SUBCOMMANDS: ascp check_update coffee detect documentation download echo email_test file folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings test tokens transferd vault wizard
|
|
4696
|
+
SUBCOMMANDS: ascp check_update coffee detect documentation download echo email_test file folder gem genkey image initdemo open platform plugins preset proxy_check pubkey remote_certificate smtp_settings sync test tokens transferd vault wizard
|
|
4468
4697
|
|
|
4469
4698
|
|
|
4470
4699
|
COMMAND: shares
|
|
@@ -4476,7 +4705,7 @@ OPTIONS:
|
|
|
4476
4705
|
|
|
4477
4706
|
|
|
4478
4707
|
COMMAND: node
|
|
4479
|
-
SUBCOMMANDS: access_keys api_details asperabrowser async basic_token bearer_token browse cat central delete download events health info license mkdir mkfile mklink rename search service simulator slash space ssync stream sync telemetry transfer transport upload watch_folder
|
|
4708
|
+
SUBCOMMANDS: access_keys api_details asperabrowser async basic_token bearer_token browse cat central delete download events health info license mkdir mkfile mklink rename search service simulator slash space spec ssync stream sync telemetry transfer transport upload watch_folder
|
|
4480
4709
|
OPTIONS:
|
|
4481
4710
|
--url=VALUE URL of application, e.g. https://app.example.com/aspera/app
|
|
4482
4711
|
--username=VALUE User's identifier
|
|
@@ -4502,7 +4731,7 @@ OPTIONS:
|
|
|
4502
4731
|
|
|
4503
4732
|
|
|
4504
4733
|
COMMAND: orchestrator
|
|
4505
|
-
SUBCOMMANDS: health info plugins processes
|
|
4734
|
+
SUBCOMMANDS: health info monitors plugins processes workflows workorders workstep
|
|
4506
4735
|
OPTIONS:
|
|
4507
4736
|
--url=VALUE URL of application, e.g. https://app.example.com/aspera/app
|
|
4508
4737
|
--username=VALUE User's identifier
|
|
@@ -4528,7 +4757,6 @@ OPTIONS:
|
|
|
4528
4757
|
--instance=VALUE ATS instance in ibm cloud
|
|
4529
4758
|
--ats-key=VALUE ATS key identifier (ats_xxx)
|
|
4530
4759
|
--ats-secret=VALUE ATS key secret
|
|
4531
|
-
--params=VALUE Parameters access key creation (@json:)
|
|
4532
4760
|
--cloud=VALUE Cloud provider
|
|
4533
4761
|
--region=VALUE Cloud region
|
|
4534
4762
|
|
|
@@ -4539,12 +4767,13 @@ OPTIONS:
|
|
|
4539
4767
|
--url=VALUE URL of application, e.g. https://app.example.com/aspera/app
|
|
4540
4768
|
--username=VALUE User's identifier
|
|
4541
4769
|
--password=VALUE User's password
|
|
4770
|
+
--auth=ENUM OAuth type of authentication: web, [jwt], boot
|
|
4542
4771
|
--client-id=VALUE OAuth client identifier
|
|
4543
4772
|
--client-secret=VALUE OAuth client secret
|
|
4544
|
-
--redirect-uri=VALUE OAuth redirect URI for web authentication
|
|
4545
|
-
--
|
|
4546
|
-
--
|
|
4547
|
-
--
|
|
4773
|
+
--redirect-uri=VALUE OAuth (Web) redirect URI for web authentication
|
|
4774
|
+
--private-key=VALUE OAuth (JWT) RSA private key PEM value (prefix file path with @file:)
|
|
4775
|
+
--passphrase=VALUE OAuth (JWT) RSA private key passphrase
|
|
4776
|
+
--scope=VALUE OAuth scope for API calls
|
|
4548
4777
|
--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
|
|
4549
4778
|
--shared-folder=VALUE Send package with files from shared folder
|
|
4550
4779
|
--group-type=ENUM Type of shared box: [shared_inboxes], workgroups
|
|
@@ -4588,12 +4817,11 @@ OPTIONS:
|
|
|
4588
4817
|
--url=VALUE URL of application, e.g. https://app.example.com/aspera/app
|
|
4589
4818
|
--username=VALUE User's identifier
|
|
4590
4819
|
--password=VALUE User's password
|
|
4591
|
-
--skip-format=ENUM Skip this preview format
|
|
4820
|
+
--skip-format=ENUM Skip this preview format: png, mp4
|
|
4592
4821
|
--folder-reset-cache=ENUM Force detection of generated preview by refresh cache: [no], header, read
|
|
4593
|
-
--skip-types=VALUE Skip types
|
|
4822
|
+
--skip-types=VALUE Skip generation for those types of files (Array)
|
|
4594
4823
|
--previews-folder=VALUE Preview folder in storage root
|
|
4595
|
-
--
|
|
4596
|
-
--skip-folders=VALUE List of folder to skip
|
|
4824
|
+
--skip-folders=VALUE List of folder to skip (Array)
|
|
4597
4825
|
--base=VALUE Basename of output for for test
|
|
4598
4826
|
--scan-path=VALUE Subpath in folder id to start scan in (default=/)
|
|
4599
4827
|
--scan-id=VALUE Folder id in storage to start scan in, default is access key main folder id
|
|
@@ -4624,17 +4852,17 @@ OPTIONS:
|
|
|
4624
4852
|
--url=VALUE URL of application, e.g. https://app.example.com/aspera/app
|
|
4625
4853
|
--username=VALUE User's identifier
|
|
4626
4854
|
--password=VALUE User's password
|
|
4627
|
-
--auth=ENUM OAuth type of authentication: web, [jwt]
|
|
4628
|
-
--client-id=VALUE OAuth
|
|
4629
|
-
--client-secret=VALUE OAuth
|
|
4630
|
-
--
|
|
4631
|
-
--
|
|
4632
|
-
--
|
|
4633
|
-
--
|
|
4634
|
-
--workspace=VALUE Name of workspace
|
|
4855
|
+
--auth=ENUM OAuth type of authentication: web, [jwt], boot
|
|
4856
|
+
--client-id=VALUE OAuth client identifier
|
|
4857
|
+
--client-secret=VALUE OAuth client secret
|
|
4858
|
+
--redirect-uri=VALUE OAuth (Web) redirect URI for web authentication
|
|
4859
|
+
--private-key=VALUE OAuth (JWT) RSA private key PEM value (prefix file path with @file:)
|
|
4860
|
+
--passphrase=VALUE OAuth (JWT) RSA private key passphrase
|
|
4861
|
+
--scope=VALUE OAuth scope for API calls
|
|
4862
|
+
--workspace=VALUE Name of workspace
|
|
4635
4863
|
--new-user-option=VALUE New user creation option for unknown package recipients (Hash)
|
|
4636
4864
|
--validate-metadata=ENUM Validate shared inbox metadata: no, [yes]
|
|
4637
|
-
--package-folder=VALUE Field of package to use as folder name, or @none:
|
|
4865
|
+
--package-folder=VALUE Field of package to use as folder name, or @none:
|
|
4638
4866
|
|
|
4639
4867
|
|
|
4640
4868
|
COMMAND: server
|
|
@@ -4643,7 +4871,7 @@ OPTIONS:
|
|
|
4643
4871
|
--url=VALUE URL of application, e.g. https://app.example.com/aspera/app
|
|
4644
4872
|
--username=VALUE User's identifier
|
|
4645
4873
|
--password=VALUE User's password
|
|
4646
|
-
--ssh-keys=VALUE SSH key path list (Array
|
|
4874
|
+
--ssh-keys=VALUE SSH key path list (Array)
|
|
4647
4875
|
--passphrase=VALUE SSH private key passphrase
|
|
4648
4876
|
--ssh-options=VALUE SSH options (Hash)
|
|
4649
4877
|
|
|
@@ -4670,18 +4898,17 @@ This option is available only for some resources: if you need it: try and see if
|
|
|
4670
4898
|
### Option: `query`
|
|
4671
4899
|
|
|
4672
4900
|
The `query` option can generally be used to add URL parameters to commands that list resources.
|
|
4673
|
-
It takes either a `Hash
|
|
4901
|
+
It takes either a `Hash`, corresponding to key/value pairs that appear in the query part of request.
|
|
4674
4902
|
|
|
4675
4903
|
For example: `--query=@json:'{"p1":"v1","p2":"v2"}'` leads to query: `?p1=v1&p2=v2`.
|
|
4676
4904
|
|
|
4677
|
-
If the same parameter needs to be provided several times, then it's possible as well to provide an `Array
|
|
4905
|
+
If the same parameter needs to be provided several times, then it's possible as well to provide an `Array`.
|
|
4678
4906
|
|
|
4679
|
-
|
|
4907
|
+
For example: `--query=@json:'{"p":["v1","v2"]}'` leads to query: `?p=v1&p=v2`.
|
|
4680
4908
|
|
|
4681
|
-
|
|
4682
|
-
- `--query=@json:'[["a[]","v1"],["a[]","v2"]]'`
|
|
4909
|
+
If PHP's style array is expected in the API, then just add `[]` to the name of the parameter.
|
|
4683
4910
|
|
|
4684
|
-
|
|
4911
|
+
For example: `--query=@json:'{"p[]":["v1","v2"]}'` leads to query: `?p[]=v1&p[]=v2`.
|
|
4685
4912
|
|
|
4686
4913
|
### Plugins
|
|
4687
4914
|
|
|
@@ -4748,39 +4975,50 @@ Aspera on Cloud API requires the use of OAuth v2 mechanism for authentication (H
|
|
|
4748
4975
|
|
|
4749
4976
|
It is recommended to use the wizard to set it up, although manual configuration is also possible.
|
|
4750
4977
|
|
|
4751
|
-
###
|
|
4978
|
+
### AoC configuration: Using Wizard
|
|
4752
4979
|
|
|
4753
4980
|
`ascli` provides a configuration [wizard](#wizard).
|
|
4754
4981
|
|
|
4755
4982
|
The wizard guides you through the steps to create a new configuration preset for Aspera on Cloud.
|
|
4756
4983
|
|
|
4757
|
-
The first optional argument is the URL of your Aspera on Cloud instance
|
|
4984
|
+
The first optional argument is the URL of your Aspera on Cloud instance or simply the organization name, i.e. one of those :
|
|
4985
|
+
|
|
4986
|
+
- `_your_organization_`
|
|
4987
|
+
- `_your_organization_.ibmaspera.com`
|
|
4988
|
+
- `https://_your_organization_.ibmaspera.com`
|
|
4989
|
+
|
|
4990
|
+
The second optional argument can also be provided to specify the plugin name, e.g. `aoc` for Aspera on Cloud.
|
|
4758
4991
|
If optional arguments are not provided, the wizard will ask interactively and try to detect the application.
|
|
4759
4992
|
|
|
4760
4993
|
Here is a sample invocation :
|
|
4761
4994
|
|
|
4762
|
-
```
|
|
4763
|
-
ascli config wizard
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
Preparing preset: aoc_myorg
|
|
4767
|
-
Please provide path to your private RSA key, or empty to generate one:
|
|
4995
|
+
```console
|
|
4996
|
+
$ ascli config wizard
|
|
4997
|
+
Using: Aspera on Cloud at https://_my_org_.ibmaspera.com
|
|
4998
|
+
Path to private RSA key (leave empty to generate):
|
|
4768
4999
|
option: key_path>
|
|
4769
|
-
|
|
4770
|
-
/
|
|
5000
|
+
Using existing key:
|
|
5001
|
+
/home/john/.aspera/ascli/my_private_key.pem
|
|
5002
|
+
Please Log in as user laurent.martin.aspera@fr.ibm.com at: https://_my_org_.ibmaspera.com
|
|
5003
|
+
Navigate to: (User) → Account Settings → Profile → Public Key
|
|
5004
|
+
Check or update the value to (including BEGIN/END lines):
|
|
5005
|
+
-----BEGIN PUBLIC KEY-----
|
|
5006
|
+
MIICIjANBg....
|
|
5007
|
+
....
|
|
5008
|
+
....kCAwEAAQ==
|
|
5009
|
+
-----END PUBLIC KEY-----
|
|
5010
|
+
Once updated or validated, press [Enter].
|
|
5011
|
+
|
|
4771
5012
|
Using global client_id.
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
creating new config preset: aoc_myorg
|
|
4775
|
-
Setting config preset as default for aspera
|
|
4776
|
-
saving configuration file
|
|
4777
|
-
Done.
|
|
5013
|
+
Preparing preset: aoc_my_org_ibmaspera_com_john_example_com
|
|
5014
|
+
Setting config preset as default for aoc
|
|
4778
5015
|
You can test with:
|
|
4779
5016
|
ascli aoc user profile show
|
|
5017
|
+
Saving config file.
|
|
4780
5018
|
```
|
|
4781
5019
|
|
|
4782
5020
|
> [!NOTE]
|
|
4783
|
-
> In above example, replace `https://
|
|
5021
|
+
> In above example, replace `https://_my_org_.ibmaspera.com` with your actual AoC URL.
|
|
4784
5022
|
|
|
4785
5023
|
Optionally, it is possible to create a new organization-specific integration, i.e. client application identification.
|
|
4786
5024
|
For this, specify the option: `--use-generic-client=no`.
|
|
@@ -4788,11 +5026,11 @@ For this, specify the option: `--use-generic-client=no`.
|
|
|
4788
5026
|
If you already know the application, and want to limit the detection to it, provide URL and plugin name:
|
|
4789
5027
|
|
|
4790
5028
|
```shell
|
|
4791
|
-
ascli config wizard
|
|
5029
|
+
ascli config wizard _my_org_ aoc
|
|
4792
5030
|
```
|
|
4793
5031
|
|
|
4794
5032
|
> [!NOTE]
|
|
4795
|
-
> In above example, replace `
|
|
5033
|
+
> In above example, replace `_my_org_` with the first part of your actual AoC URL: `https://_my_org_.ibmaspera.com`.
|
|
4796
5034
|
|
|
4797
5035
|
After successful completion of the wizard, a new configuration preset is created, and set as default for the `aoc` plugin.
|
|
4798
5036
|
This can be verified with command:
|
|
@@ -4801,12 +5039,12 @@ This can be verified with command:
|
|
|
4801
5039
|
ascli config preset over
|
|
4802
5040
|
```
|
|
4803
5041
|
|
|
4804
|
-
###
|
|
5042
|
+
### AoC configuration: Using manual setup
|
|
4805
5043
|
|
|
4806
5044
|
> [!NOTE]
|
|
4807
5045
|
> If you used the wizard (recommended): skip this section.
|
|
4808
5046
|
|
|
4809
|
-
####
|
|
5047
|
+
#### AoC manual configuration: Details
|
|
4810
5048
|
|
|
4811
5049
|
Several types of OAuth authentication are supported:
|
|
4812
5050
|
|
|
@@ -4836,7 +5074,7 @@ Else you can use a specific OAuth API `client_id`, the first step is to declare
|
|
|
4836
5074
|
|
|
4837
5075
|
Let's start by a registration with web based authentication (auth=web):
|
|
4838
5076
|
|
|
4839
|
-
- Open a web browser, log to your instance: e.g. `https://
|
|
5077
|
+
- Open a web browser, log to your instance: e.g. `https://_my_org_.ibmaspera.com/`
|
|
4840
5078
|
(use your actual AoC instance URL)
|
|
4841
5079
|
- Go to Apps → Admin → Organization → Integrations
|
|
4842
5080
|
- Click **Create New**
|
|
@@ -4861,14 +5099,14 @@ Let's create an [Option Preset](#option-preset) called: `my_aoc_org` using `ask`
|
|
|
4861
5099
|
|
|
4862
5100
|
```shell
|
|
4863
5101
|
ascli config preset ask my_aoc_org url client_id client_secret
|
|
4864
|
-
option: url> https://
|
|
5102
|
+
option: url> https://_my_org_.ibmaspera.com/
|
|
4865
5103
|
option: client_id> my_client_id_here
|
|
4866
5104
|
option: client_secret> my_client_secret_here
|
|
4867
5105
|
updated: my_aoc_org
|
|
4868
5106
|
```
|
|
4869
5107
|
|
|
4870
5108
|
> [!NOTE]
|
|
4871
|
-
> In above example, replace `https://
|
|
5109
|
+
> In above example, replace `https://_my_org_.ibmaspera.com` with your actual AoC URL.
|
|
4872
5110
|
|
|
4873
5111
|
(This can also be done in one line using the command `config preset update my_aoc_org --url=...`)
|
|
4874
5112
|
|
|
@@ -4896,7 +5134,7 @@ This can be done in two manners:
|
|
|
4896
5134
|
|
|
4897
5135
|
- Graphically
|
|
4898
5136
|
|
|
4899
|
-
- Open a web browser, log to your instance: `https://
|
|
5137
|
+
- Open a web browser, log to your instance: `https://_my_org_.ibmaspera.com/`
|
|
4900
5138
|
(Use your actual AoC instance URL)
|
|
4901
5139
|
- Go to Apps → Admin → Organization → Integrations
|
|
4902
5140
|
- Click on the previously created application
|
|
@@ -4939,7 +5177,7 @@ This can be done in two manners:
|
|
|
4939
5177
|
|
|
4940
5178
|
Open the previously generated public key located here: `$HOME/.aspera/ascli/my_private_key.pub`
|
|
4941
5179
|
|
|
4942
|
-
- Open a web browser, log to your instance: `https://
|
|
5180
|
+
- Open a web browser, log to your instance: `https://_my_org_.ibmaspera.com/`
|
|
4943
5181
|
(Use your actual AoC instance URL)
|
|
4944
5182
|
- Click on the user's icon (top right)
|
|
4945
5183
|
- Select **Account Settings**
|
|
@@ -5039,7 +5277,7 @@ ascli aoc files bearer_token_node /
|
|
|
5039
5277
|
```
|
|
5040
5278
|
|
|
5041
5279
|
```shell
|
|
5042
|
-
ascli aoc admin node v4
|
|
5280
|
+
ascli aoc admin node v4 <node_id> --secret=_ak_secret_here_ bearer_token_node /
|
|
5043
5281
|
```
|
|
5044
5282
|
|
|
5045
5283
|
### Administration
|
|
@@ -5623,7 +5861,7 @@ ascli aoc packages shared_inboxes list
|
|
|
5623
5861
|
|
|
5624
5862
|
Use fields: `recipients` and/or `bcc_recipients` to provide the list of recipients: **user** or **shared inbox**:
|
|
5625
5863
|
|
|
5626
|
-
- Provide either IDs as expected by API: `"recipients":[{"type":"dropbox","id":"
|
|
5864
|
+
- Provide either IDs as expected by API: `"recipients":[{"type":"dropbox","id":"_my_shibox_id_"}]`
|
|
5627
5865
|
- or just names: `"recipients":[{"The Dest"}]`.
|
|
5628
5866
|
|
|
5629
5867
|
ascli will resolve the list of email addresses and dropbox names to the expected type/ID list, based on case-insensitive partial match.
|
|
@@ -5642,13 +5880,13 @@ ascli aoc packages send @json:'{"name":"my title","note":"my note","recipients":
|
|
|
5642
5880
|
##### Example: Send a package to a shared inbox with metadata
|
|
5643
5881
|
|
|
5644
5882
|
```shell
|
|
5645
|
-
ascli aoc packages send --workspace="
|
|
5883
|
+
ascli aoc packages send --workspace="<workspace_name>" @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
|
|
5646
5884
|
```
|
|
5647
5885
|
|
|
5648
5886
|
It is also possible to use identifiers and API parameters:
|
|
5649
5887
|
|
|
5650
5888
|
```shell
|
|
5651
|
-
ascli aoc packages send --workspace="
|
|
5889
|
+
ascli aoc packages send --workspace="<workspace_name>" @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
|
|
5652
5890
|
```
|
|
5653
5891
|
|
|
5654
5892
|
##### Example: Send a package with files from the Files app
|
|
@@ -5693,12 +5931,12 @@ By default, all files in the package are downloaded, i.e. `.` is used as the fil
|
|
|
5693
5931
|
Option `package_folder` defines the attribute of folder used as destination sub folder in the `to_folder` path (see description earlier).
|
|
5694
5932
|
The following syntax is supported
|
|
5695
5933
|
|
|
5696
|
-
| Syntax
|
|
5697
|
-
|
|
5698
|
-
| `@none:`
|
|
5699
|
-
| `<field>`
|
|
5700
|
-
| `<field1>+<field2>`
|
|
5701
|
-
| `<field1>+<field2>?` | A subfolder named after the package's specified field1 is created, unless it already exists
|
|
5934
|
+
| Syntax | Description |
|
|
5935
|
+
|----------------------|----------------------------------------------------------------------------------------|
|
|
5936
|
+
| `@none:` | No subfolder is created, files are downloaded directly into the specified `to_folder`. |
|
|
5937
|
+
| `<field>` | A subfolder named after the package's specified field is created inside `to_folder`. |
|
|
5938
|
+
| `<field1>+<field2>` | A subfolder named after the combination of two package fields with a `.` is created inside `to_folder`. |
|
|
5939
|
+
| `<field1>+<field2>?` | A subfolder named after the package's specified field1 is created, unless it already exists.<br/>Else it falls back to the combination of both fields with `.`. |
|
|
5702
5940
|
|
|
5703
5941
|
The special value `seq` for `<field2>` will append an incrementing number to the folder name starting at `1`.
|
|
5704
5942
|
If `?` is used, then the sequence number is used only if the folder already exists.
|
|
@@ -5768,15 +6006,15 @@ ascli aoc package node_info <package ID here> / --format=json --show-secrets=yes
|
|
|
5768
6006
|
|
|
5769
6007
|
By default, when using `aoc packages list` or `aoc packages receive ALL`, the following `query` is performed:
|
|
5770
6008
|
|
|
5771
|
-
| Query parameter | Value
|
|
5772
|
-
|
|
6009
|
+
| Query parameter | Value |
|
|
6010
|
+
|----------------------------|-----------------------------------------------|
|
|
5773
6011
|
| `archived` | `false` |
|
|
5774
6012
|
| `has_content` | `true` |
|
|
5775
6013
|
| `received` | `true` |
|
|
5776
6014
|
| `completed` | `true` |
|
|
5777
|
-
| `workspace_id` | Set based on current workspace.
|
|
6015
|
+
| `workspace_id` | Set based on current workspace. |
|
|
5778
6016
|
| `dropbox_id` | Set according to `dropbox_name`, if provided. |
|
|
5779
|
-
| `exclude_dropbox_packages` | `true` unless `dropbox_id` is provided.
|
|
6017
|
+
| `exclude_dropbox_packages` | `true` unless `dropbox_id` is provided. |
|
|
5780
6018
|
|
|
5781
6019
|
Parameters provided using option `query` override this query.
|
|
5782
6020
|
To remove a parameter, set it to `null`.
|
|
@@ -5839,7 +6077,7 @@ ascli aoc files download <single file path>
|
|
|
5839
6077
|
|
|
5840
6078
|
#### Shared folders
|
|
5841
6079
|
|
|
5842
|
-
Like in AoC web UI,
|
|
6080
|
+
Like in AoC web UI, **Shared Folders** can be created and shared with either **Private** or **Public** links.
|
|
5843
6081
|
**Private** links require the collaborator to log in to access the shared folder.
|
|
5844
6082
|
**Public** links include a passcode that enables the user to access the shared folder without login-in.
|
|
5845
6083
|
|
|
@@ -5866,19 +6104,19 @@ The basic payload to create a permission, i.e. a Shared Folder (last argument at
|
|
|
5866
6104
|
`ascli` expects the same payload for creation.
|
|
5867
6105
|
`ascli` automatically populates some payload fields and provides convenient additional fields that generate native fields:
|
|
5868
6106
|
|
|
5869
|
-
| Field | Type | Description
|
|
5870
|
-
|
|
6107
|
+
| Field | Type | Description |
|
|
6108
|
+
|-----------------|----------|----------------------------------------------------------------------|
|
|
5871
6109
|
| `file_id` | Native<br/>Auto | ID of the folder to share, as specified in the command line by path. |
|
|
5872
|
-
| `access_levels` | Native<br/>Optional | List of access levels to set for the shared folder
|
|
6110
|
+
| `access_levels` | Native<br/>Optional | List of access levels to set for the shared folder.<br/>Defaults to full access. |
|
|
5873
6111
|
| `tags` | Native<br/>Auto | Set with expected values for AoC: username who creates, and workspace in which the shared folder is created. |
|
|
5874
|
-
| `access_type` | Native<br/>Required | Type of access, such as `user`, `group`, or `workspace
|
|
6112
|
+
| `access_type` | Native<br/>Required | Type of access, such as `user`, `group`, or `workspace`.<br/>Can be set with parameter `with`. |
|
|
5875
6113
|
| `access_id` | Native<br/>Required | ID of the user, group, or workspace (see `with`) |
|
|
5876
|
-
| `with` | `ascli` | Recipient of shared folder. Can be a username, a group name, or a workspace name
|
|
6114
|
+
| `with` | `ascli` | Recipient of shared folder. Can be a username, a group name, or a workspace name.<br/>`ascli` will resolve the name to the proper type and ID in fields `access_type` and `access_id`.<br/>If the value is the empty string, then it declares the shared folder in the workspace (first action to do, see below). |
|
|
5877
6115
|
| `link_name` | `ascli` | Name of the link file created in the user's home folder for private links. |
|
|
5878
6116
|
| `as` | `ascli` | Name of the link file created in the user's home folder for admin shared folders. |
|
|
5879
6117
|
|
|
5880
|
-
In order to declare/create the shared folder in the workspace, a special value for `access_id` is used: `ASPERA_ACCESS_KEY_ADMIN_WS_[workspace ID]
|
|
5881
|
-
This is conveniently set by `ascli` using an empty string for field `with`.
|
|
6118
|
+
In order to declare/create the shared folder in the workspace, a special value for `access_id` is used: `ASPERA_ACCESS_KEY_ADMIN_WS_[workspace ID]`, with a `access_type` of `user`.
|
|
6119
|
+
This is conveniently set by `ascli` using an **empty string** for field `with`.
|
|
5882
6120
|
In order to share a folder with a different, special tags are set, but this is conveniently done by `ascli` using the `as` field.
|
|
5883
6121
|
|
|
5884
6122
|
##### User Shared Folders
|
|
@@ -5891,11 +6129,11 @@ ascli aoc files permission --workspace=<workspace name> <path to folder> ...
|
|
|
5891
6129
|
|
|
5892
6130
|
> [!NOTE]
|
|
5893
6131
|
> The workspace is identified by name, and folder by path, relative to the user's home.
|
|
5894
|
-
> To use an identifier instead, one can use the percent selector, like `%id:
|
|
6132
|
+
> To use an identifier instead, one can use the percent selector, like `%id:_my_ws_id_`.
|
|
5895
6133
|
|
|
5896
6134
|
##### Admin Shared Folders
|
|
5897
6135
|
|
|
5898
|
-
Admin shared folders, created by administrators in a workspace follow the syntax:
|
|
6136
|
+
Admin shared folders, created by administrators in a workspace, follow the syntax:
|
|
5899
6137
|
|
|
5900
6138
|
```shell
|
|
5901
6139
|
ascli aoc admin node do <node ID> permission --workspace=<workspace name> <path to folder>
|
|
@@ -5903,9 +6141,11 @@ ascli aoc admin node do <node ID> permission --workspace=<workspace name> <path
|
|
|
5903
6141
|
|
|
5904
6142
|
> [!TIP]
|
|
5905
6143
|
> The node is identified by identifier.
|
|
5906
|
-
> To use an name instead, one can use the percent selector, like `%name:"my node"
|
|
6144
|
+
> To use an name instead, one can use the percent selector, like `%name:"my node"`.
|
|
6145
|
+
> The path is identifier by a path, one can specify a file id, with `%id:123`.
|
|
6146
|
+
> If the id is left blank: `%id:`, then if means `*`, i.e. all.
|
|
5907
6147
|
|
|
5908
|
-
##### Example: List permissions on a shared folder
|
|
6148
|
+
##### Example: List permissions on a user shared folder
|
|
5909
6149
|
|
|
5910
6150
|
```shell
|
|
5911
6151
|
ascli aoc files permission /shared_folder_test1 list
|
|
@@ -5952,7 +6192,7 @@ To remove a password:
|
|
|
5952
6192
|
> [!NOTE]
|
|
5953
6193
|
> Access level cannot be customized in this version.
|
|
5954
6194
|
|
|
5955
|
-
An expiration date can be set with parameter `expires_at`, using ISO 8601 format.
|
|
6195
|
+
An expiration date can be set with parameter `expires_at`, using [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
|
|
5956
6196
|
E.g. `2025-08-29T08:10:31.000Z`.
|
|
5957
6197
|
If only a date is provided, it will be set to midnight UTC of that date.
|
|
5958
6198
|
|
|
@@ -5960,16 +6200,16 @@ If only a date is provided, it will be set to midnight UTC of that date.
|
|
|
5960
6200
|
|
|
5961
6201
|
First, identify the node ID where the shared folder will be created.
|
|
5962
6202
|
|
|
5963
|
-
To get the node ID of the default node for workspace
|
|
6203
|
+
To get the node ID of the default node for workspace `<workspace_name>`, use the command:
|
|
5964
6204
|
|
|
5965
6205
|
```shell
|
|
5966
|
-
ascli aoc admin workspace show %name:'
|
|
6206
|
+
ascli aoc admin workspace show %name:'<workspace_name>' --fields=node_id
|
|
5967
6207
|
```
|
|
5968
6208
|
|
|
5969
6209
|
Alternatively (longer):
|
|
5970
6210
|
|
|
5971
6211
|
```shell
|
|
5972
|
-
ascli aoc admin workspace list --select=@json:'{"name":"
|
|
6212
|
+
ascli aoc admin workspace list --select=@json:'{"name":"<workspace_name>"}' --fields=node_id
|
|
5973
6213
|
```
|
|
5974
6214
|
|
|
5975
6215
|
Or select a node identifier manually from the list of nodes:
|
|
@@ -5980,24 +6220,22 @@ ascli aoc admin node list --fields=id,name
|
|
|
5980
6220
|
|
|
5981
6221
|
In the following commands, replace:
|
|
5982
6222
|
|
|
5983
|
-
-
|
|
5984
|
-
-
|
|
5985
|
-
-
|
|
5986
|
-
|
|
5987
|
-
The node can also be conveniently identified using the **percent selector** instead of numerical ID: `%name:"my node"`.
|
|
6223
|
+
- `<node_id>` with the node ID, or with `%name:<node_name>`.
|
|
6224
|
+
- `<workspace_name>` with the workspace name, or with `%id:<workspace_id>`.
|
|
6225
|
+
- `<folder_path>` with the path of the folder to share on the node (e.g. `/my_folder` or simply `my_folder`). It can also be a folder deeper than level 1.
|
|
5988
6226
|
|
|
5989
6227
|
If the shared folder does not exist, then create it:
|
|
5990
6228
|
|
|
5991
6229
|
```shell
|
|
5992
|
-
ascli aoc admin node do
|
|
6230
|
+
ascli aoc admin node do <node_id> mkdir <folder_path>
|
|
5993
6231
|
```
|
|
5994
6232
|
|
|
5995
|
-
Create the shared folder in workspace
|
|
5996
|
-
Optionally use `as` to set the name of the shared folder if different from the folder name on the node.
|
|
6233
|
+
Create the shared folder in workspace `<workspace_name>` (set `with` to empty string, or do not specify it).
|
|
6234
|
+
**Optionally**, use `as` to set the name of the shared folder if different from the folder name on the node.
|
|
5997
6235
|
For other options, refer to the previous section on shared folders.
|
|
5998
6236
|
|
|
5999
6237
|
```shell
|
|
6000
|
-
ascli aoc admin node do
|
|
6238
|
+
ascli aoc admin node do <node_id> permission <folder_path> create @json:'{"with":"","as":"folder_for_users"}' --workspace="<workspace_name>"
|
|
6001
6239
|
```
|
|
6002
6240
|
|
|
6003
6241
|
> [!NOTE]
|
|
@@ -6008,20 +6246,81 @@ The `"with"` parameter will perform a lookup, and set fields `access_type` and `
|
|
|
6008
6246
|
The native fields `access_type` and `access_id` can also be used, instead of `with`.
|
|
6009
6247
|
|
|
6010
6248
|
```shell
|
|
6011
|
-
ascli aoc admin node do
|
|
6249
|
+
ascli aoc admin node do <node_id> permission <folder_path> create @json:'{"with":"john@example.com","as":"folder_for_one_user"}' --workspace="<workspace_name>"
|
|
6012
6250
|
```
|
|
6013
6251
|
|
|
6014
6252
|
```shell
|
|
6015
|
-
ascli aoc admin node do
|
|
6253
|
+
ascli aoc admin node do <node_id> permission <folder_path> create @json:'{"with":"group 1","as":"folder_for_a_group"}' --workspace="<workspace_name>"
|
|
6016
6254
|
```
|
|
6017
6255
|
|
|
6018
6256
|
```shell
|
|
6019
|
-
ascli aoc admin node do
|
|
6257
|
+
ascli aoc admin node do <node_id> permission <folder_path> create @json:'{"with":"<workspace_name>","as":"folder_for_all_workspace"}' --workspace="<workspace_name>"
|
|
6020
6258
|
```
|
|
6021
6259
|
|
|
6022
6260
|
> [!NOTE]
|
|
6023
6261
|
> In the previous commands, field `as` is optional.
|
|
6024
6262
|
|
|
6263
|
+
##### Example: List all workspace admin shared folder in a workspace
|
|
6264
|
+
|
|
6265
|
+
```shell
|
|
6266
|
+
ascli aoc admin workspace shared_folder %name:'<workspace_name>' list
|
|
6267
|
+
```
|
|
6268
|
+
|
|
6269
|
+
```text
|
|
6270
|
+
╭───────┬───────────┬─────────┬─────────┬───────────┬──────────────────────────────────────╮
|
|
6271
|
+
│ id │ node_name │ node_id │ file_id │ file.path │ tags.aspera.files.workspace.share_as │
|
|
6272
|
+
╞═══════╪═══════════╪═════════╪═════════╪═══════════╪══════════════════════════════════════╡
|
|
6273
|
+
│ 198 │ eudemo │ 8666 │ 2465 │ /project1 │ │
|
|
6274
|
+
│ 785 │ eudemo │ 8666 │ 9 │ /folder2 │ project2 │
|
|
6275
|
+
│ 4788 │ eudemo │ 8666 │ 3691 │ /backup │ │
|
|
6276
|
+
╰───────┴───────────┴─────────┴─────────┴───────────┴──────────────────────────────────────╯
|
|
6277
|
+
```
|
|
6278
|
+
|
|
6279
|
+
To list members:
|
|
6280
|
+
|
|
6281
|
+
```shell
|
|
6282
|
+
ascli aoc admin workspace shared_folder %name:'<workspace_name>' member 198 list
|
|
6283
|
+
```
|
|
6284
|
+
|
|
6285
|
+
```text
|
|
6286
|
+
╭─────────────┬──────────────────────────────────┬──────────────┬──────────────────────╮
|
|
6287
|
+
│ access_type │ access_id │ access_level │ last_updated_at │
|
|
6288
|
+
╞═════════════╪══════════════════════════════════╪══════════════╪══════════════════════╡
|
|
6289
|
+
│ user │ ASPERA_ACCESS_KEY_ADMIN_WS_45071 │ edit │ 2020-11-29T22:48:49Z │
|
|
6290
|
+
│ group │ 160270 │ edit │ 2024-05-13T15:58:02Z │
|
|
6291
|
+
╰─────────────┴──────────────────────────────────┴──────────────┴──────────────────────╯
|
|
6292
|
+
```
|
|
6293
|
+
|
|
6294
|
+
If you have the node id of the shared folder, than it is equivalent to:
|
|
6295
|
+
|
|
6296
|
+
```shell
|
|
6297
|
+
ascli aoc admin node do 8669 perm /project1 list --query=@json:'{"tag":"aspera.files.workspace.id=<workspace_id>"}'
|
|
6298
|
+
```
|
|
6299
|
+
|
|
6300
|
+
##### Example: List all workspace admin shared folder on a node
|
|
6301
|
+
|
|
6302
|
+
First get the workspace identifier:
|
|
6303
|
+
|
|
6304
|
+
```shell
|
|
6305
|
+
ascli aoc admin workspace list --select=@json:'{"name":"<workspace_name>"}' --fields=id
|
|
6306
|
+
```
|
|
6307
|
+
|
|
6308
|
+
```text
|
|
6309
|
+
<workspace_id>
|
|
6310
|
+
```
|
|
6311
|
+
|
|
6312
|
+
Then, identify the node id on which to list, see previous section.
|
|
6313
|
+
|
|
6314
|
+
Finally, list all shared folders, as permissions:
|
|
6315
|
+
|
|
6316
|
+
```shell
|
|
6317
|
+
ascli aoc admin node do <node_id> perm %id: list --query=@json:'{"access_type":"user","access_id":"ASPERA_ACCESS_KEY_ADMIN_WS_<workspace_id>"}'
|
|
6318
|
+
```
|
|
6319
|
+
|
|
6320
|
+
> [!NOTE]
|
|
6321
|
+
> Refer to Node API: `GET /permissions` for all `query` options.
|
|
6322
|
+
> The folder identifier is left empty `%id:`, to apply to all folders.
|
|
6323
|
+
|
|
6025
6324
|
#### Cross Organization transfers
|
|
6026
6325
|
|
|
6027
6326
|
It is possible to transfer files directly between organizations without having to first download locally and then upload...
|
|
@@ -6030,7 +6329,7 @@ Although optional, the creation of [Option Preset](#option-preset) is recommende
|
|
|
6030
6329
|
|
|
6031
6330
|
Procedure to send a file from org1 to org2:
|
|
6032
6331
|
|
|
6033
|
-
- Get access to Organization 1 and create an [Option Preset](#option-preset): e.g. `org1`, for instance, use the [Wizard](#
|
|
6332
|
+
- Get access to Organization 1 and create an [Option Preset](#option-preset): e.g. `org1`, for instance, use the [Wizard](#wizard)
|
|
6034
6333
|
- Check that access works and locate the source file e.g. `mysourcefile`, e.g. using command `files browse`
|
|
6035
6334
|
- Get access to Organization 2 and create an [Option Preset](#option-preset): e.g. `org2`
|
|
6036
6335
|
- Check that access works and locate the destination folder `mydestfolder`
|
|
@@ -6072,12 +6371,12 @@ For instructions, refer to section `find` for plugin `node`.
|
|
|
6072
6371
|
> Add `ascli aoc` in front of the following commands:
|
|
6073
6372
|
|
|
6074
6373
|
```bash
|
|
6075
|
-
admin analytics
|
|
6374
|
+
admin analytics files organization '' aoc_transfer_id
|
|
6076
6375
|
admin analytics transfers organization --query=@json:'{"status":"completed","direction":"receive","limit":2}' --notify-to=my_email_external --notify-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
|
|
6077
6376
|
admin analytics transfers users --once-only=yes
|
|
6078
6377
|
admin application list
|
|
6079
|
-
admin ats access_key create --cloud=aws --region=my_region
|
|
6080
|
-
admin ats access_key create --cloud=softlayer --region=my_region
|
|
6378
|
+
admin ats access_key create --cloud=aws --region=my_region @json:'{"id":"ak_aws_aoc","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
|
|
6379
|
+
admin ats access_key create --cloud=softlayer --region=my_region @json:'{"id":"ak1ibmcloud","secret":"my_secret_here","name":"my test key","storage":{"type":"ibm-s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
|
|
6081
6380
|
admin ats access_key delete ak1ibmcloud
|
|
6082
6381
|
admin ats access_key list --fields=name,id
|
|
6083
6382
|
admin ats access_key node ak1ibmcloud --secret=my_secret_here browse /
|
|
@@ -6122,15 +6421,18 @@ admin subscription usage
|
|
|
6122
6421
|
admin subscription usage MONTH
|
|
6123
6422
|
admin user list
|
|
6124
6423
|
admin user modify %name:my_user_email @json:'{"deactivated":false}'
|
|
6424
|
+
admin workspace dropbox %name:my_other_workspace list
|
|
6125
6425
|
admin workspace list
|
|
6426
|
+
admin workspace shared_folder %name:my_other_workspace list
|
|
6427
|
+
admin workspace shared_folder %name:my_other_workspace member shared_folder_id list
|
|
6126
6428
|
admin workspace_membership list
|
|
6127
6429
|
admin workspace_membership list --fields=ALL --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
|
|
6128
|
-
automation workflow action wf_id create @json:'{"name":"toto"}'
|
|
6430
|
+
automation workflow action wf_id create @json:'{"name":"toto"}'
|
|
6129
6431
|
automation workflow create @json:'{"name":"test_workflow"}'
|
|
6130
6432
|
automation workflow delete wf_id
|
|
6131
6433
|
automation workflow list
|
|
6132
6434
|
automation workflow list --query=@json:'{"show_org_workflows":"true"}' --scope=admin:all
|
|
6133
|
-
automation workflow list --select=@json:'{"name":"test_workflow"}' --fields=id
|
|
6435
|
+
automation workflow list --select=@json:'{"name":"test_workflow"}' --fields=id
|
|
6134
6436
|
bearer_token --display=data --scope=user:all
|
|
6135
6437
|
files bearer /
|
|
6136
6438
|
files bearer_token_node / --cache-tokens=no
|
|
@@ -6143,7 +6445,7 @@ files browse my_remote_folder
|
|
|
6143
6445
|
files browse my_remote_folder/
|
|
6144
6446
|
files cat testdst/test_file.bin
|
|
6145
6447
|
files delete /testsrc
|
|
6146
|
-
files
|
|
6448
|
+
files download --to-folder=. testdst/test_file.bin testdst/test_file.bin
|
|
6147
6449
|
files download --transfer=connect testdst/test_file.bin
|
|
6148
6450
|
files download --transfer=desktop testdst/test_file.bin
|
|
6149
6451
|
files find /
|
|
@@ -6151,7 +6453,6 @@ files find / '\.partial$'
|
|
|
6151
6453
|
files find / @ruby:'->(f){f["type"].eql?("file")}'
|
|
6152
6454
|
files mkdir /testsrc
|
|
6153
6455
|
files modify /some_folder @json:'{"mount_point":false}'
|
|
6154
|
-
files modify my_test_folder
|
|
6155
6456
|
files permission my_test_folder list
|
|
6156
6457
|
files rename /some_folder testdst
|
|
6157
6458
|
files short_link /testdst private create
|
|
@@ -6168,9 +6469,8 @@ files transfer push /testsrc --to-folder=/testdst test_file.bin
|
|
|
6168
6469
|
files upload --to-folder=/ test_file.bin --url=my_public_link_folder_no_pass
|
|
6169
6470
|
files upload --to-folder=/testsrc test_file.bin
|
|
6170
6471
|
files upload --to-folder=/testsrc test_file.bin test_file.bin
|
|
6171
|
-
files upload --workspace=my_other_workspace --to-folder=my_other_folder test_file.bin --transfer=node --transfer-info=@json:@stdin:
|
|
6172
6472
|
files v3 info
|
|
6173
|
-
gateway
|
|
6473
|
+
gateway @json:'{"url":"https://localhost:12345/aspera/faspex"}'
|
|
6174
6474
|
organization
|
|
6175
6475
|
organization --format=image --fields=background_image_url --ui=text
|
|
6176
6476
|
organization --url=my_public_link_recv_from_aoc_user
|
|
@@ -6182,14 +6482,13 @@ packages receive ALL --once-only=yes --to-folder=. --lock-port=12345 --query=@js
|
|
|
6182
6482
|
packages receive INIT --once-only=yes --query=@json:'{"dropbox_name":"my_shared_inbox_name"}'
|
|
6183
6483
|
packages receive package_id3 --to-folder=.
|
|
6184
6484
|
packages receive package_id3 --to-folder=. / --package-folder=name
|
|
6185
|
-
packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"
|
|
6186
|
-
packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"
|
|
6187
|
-
packages send --workspace=my_workspace_shared_inbox
|
|
6188
|
-
packages send
|
|
6189
|
-
packages send @json:'{"name":"
|
|
6190
|
-
packages send @json:'{"name":"
|
|
6191
|
-
packages send @json:'{"name":"
|
|
6192
|
-
packages send @json:'{"name":"$(notdir test) PACKAGE_TITLE_BASE"}' test_file.bin --url=my_public_link_send_shared_inbox
|
|
6485
|
+
packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"package title","recipients":["my_shared_inbox_meta"],"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"]}]}' test_file.bin
|
|
6486
|
+
packages send --workspace=my_workspace_shared_inbox --validate-metadata=yes @json:'{"name":"package title","recipients":["my_shared_inbox_meta"],"metadata":{"Project Id":"456","Type":"Opt2","CheckThose":["Check1","Check2"],"Optional Date":"2021-01-13T15:02:00.000Z"}}' test_file.bin
|
|
6487
|
+
packages send --workspace=my_workspace_shared_inbox @json:'{"name":"package title","recipients":["my_shared_inbox_name"]}' test_file.bin
|
|
6488
|
+
packages send @json:'{"name":"package title","recipients":["my_email_external"]}' --new-user-option=@json:'{"package_contact":true}' test_file.bin
|
|
6489
|
+
packages send @json:'{"name":"package title","recipients":["my_email_internal"],"note":"my - note"}' test_file.bin
|
|
6490
|
+
packages send @json:'{"name":"package title"}' test_file.bin --url=my_public_link_send_aoc_user --password=my_public_link_send_use_pass
|
|
6491
|
+
packages send @json:'{"name":"package title"}' test_file.bin --url=my_public_link_send_shared_inbox
|
|
6193
6492
|
packages shared_inboxes list
|
|
6194
6493
|
packages shared_inboxes show %name:my_shared_inbox_name
|
|
6195
6494
|
remind --username=my_user_email
|
|
@@ -6336,10 +6635,9 @@ The parameters provided to ATS for access key creation are the ones of [ATS API]
|
|
|
6336
6635
|
|
|
6337
6636
|
```bash
|
|
6338
6637
|
access_key cluster ak2ibmcloud --secret=my_secret_here
|
|
6339
|
-
access_key create --cloud=aws --region=my_region
|
|
6340
|
-
access_key create --cloud=softlayer --region=my_region
|
|
6638
|
+
access_key create --cloud=aws --region=my_region @json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
|
|
6639
|
+
access_key create --cloud=softlayer --region=my_region @json:'{"id":"ak2ibmcloud","secret":"my_secret_here","name":"my test key","storage":{"type":"ibm-s3","bucket":"my_bucket","credentials":{"access_key_id":"my_access_key","secret_access_key":"my_secret_key"},"path":"/"}}'
|
|
6341
6640
|
access_key delete ak2ibmcloud
|
|
6342
|
-
access_key delete ak_aws
|
|
6343
6641
|
access_key entitlement ak2ibmcloud
|
|
6344
6642
|
access_key list --fields=name,id
|
|
6345
6643
|
access_key node ak2ibmcloud browse / --secret=my_secret_here
|
|
@@ -6379,7 +6677,7 @@ ascli server --url=ssh://hsts.example.com:33001 --username=john --ssh-keys=~/.ss
|
|
|
6379
6677
|
|
|
6380
6678
|
```bash
|
|
6381
6679
|
browse /
|
|
6382
|
-
browse / --password=@none: --ssh-options=@json:'{"number_of_password_prompts":0}' --ssh-keys
|
|
6680
|
+
browse / --password=@none: --ssh-options=@json:'{"number_of_password_prompts":0}' --ssh-keys=serv_key_path
|
|
6383
6681
|
browse my_inside_folder/test_file.bin
|
|
6384
6682
|
browse my_upload_folder/target_hot
|
|
6385
6683
|
cp my_inside_folder/test_file.bin my_upload_folder/200KB.2
|
|
@@ -6389,24 +6687,26 @@ df
|
|
|
6389
6687
|
download my_inside_folder/test_file.bin --to-folder=. --transfer-info=@json:'{"wss":false,"resume":{"iter_max":1}}'
|
|
6390
6688
|
download my_large_file --to-folder=my_upload_folder --transfer=node --ts.resume_policy=none
|
|
6391
6689
|
du /
|
|
6690
|
+
health transfer --to-folder=my_upload_folder
|
|
6392
6691
|
health transfer --to-folder=my_upload_folder --format=nagios
|
|
6393
6692
|
info
|
|
6394
6693
|
md5sum my_inside_folder/test_file.bin
|
|
6395
6694
|
mkdir my_inside_folder --logger=stdout
|
|
6396
6695
|
mkdir my_upload_folder/target_hot
|
|
6397
6696
|
mv my_upload_folder/200KB.2 my_upload_folder/to.delete
|
|
6697
|
+
sync admin file_info /data/local_sync
|
|
6698
|
+
sync admin overview /data/local_sync
|
|
6398
6699
|
sync admin status /data/local_sync
|
|
6700
|
+
sync pull my_inside_folder --to-folder=/data/local_sync @json:'{"name":"serv_sync_pull_conf","reset":true,"transport":{"target_rate":my_bps}}'
|
|
6399
6701
|
sync pull my_inside_folder --to-folder=/data/local_sync @json:'{"name":"serv_sync_pull_conf"}'
|
|
6400
|
-
upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:'{"target_rate_kbps":1000000,"resume_policy":"none","precalculate_job_size":true}'
|
|
6401
|
-
upload 'faux:///test1?100m' 'faux:///test2?100m' --to-folder=/Upload --ts=@json:'{"target_rate_kbps":1000000,"resume_policy":"none","precalculate_job_size":true}' --transfer-info=@json:'{"quiet":false}' --progress=no
|
|
6402
|
-
upload 'test_file.bin' --to-folder=my_inside_folder --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":100000}' --transfer-info=@json:'{"spawn_delay_sec":2.5,"multi_incr_udp":false}' --progress-bar=yes
|
|
6403
6702
|
upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-list","filelist.txt"]}' --to-folder=my_inside_folder
|
|
6404
6703
|
upload --sources=@ts --transfer-info=@json:'{"ascp_args":["--file-pair-list","file_pair_list.txt"]}'
|
|
6405
6704
|
upload --sources=@ts --ts=@json:'{"paths":[{"source":"test_file.bin","destination":"my_inside_folder/other_name_4"}]}' --transfer=transferd
|
|
6406
|
-
upload --src-type=pair 'test_file.bin' my_inside_folder/other_name_2 --notify-to=my_email_external --transfer-info=@json:'{"ascp_args":["-l","100m"]}'
|
|
6407
6705
|
upload --src-type=pair --sources=@json:'["test_file.bin","my_inside_folder/other_name_3"]' --transfer-info.quiet=false --progress=no
|
|
6706
|
+
upload --src-type=pair test_file.bin my_inside_folder/other_name_2 --notify-to=my_email_external --transfer-info=@json:'{"ascp_args":["-l","100m"]}'
|
|
6408
6707
|
upload --src-type=pair test_file.bin my_upload_folder/other_name_5 --ts=@json:'{"cipher":"aes-192-gcm","content_protection":"encrypt","content_protection_password":"my_secret_here","cookie":"biscuit","create_dir":true,"delete_before_transfer":false,"delete_source":false,"exclude_newer_than":"-1","exclude_older_than":"-10000","fasp_port":33001,"http_fallback":false,"multi_session":0,"overwrite":"diff+older","precalculate_job_size":true,"preserve_access_time":true,"preserve_creation_time":true,"rate_policy":"fair","resume_policy":"sparse_csum","symlink_policy":"follow"}'
|
|
6409
6708
|
upload --to-folder=my_upload_folder/target_hot --lock-port=12345 --transfer-info=@json:'{"ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","source_hot"]}' source_hot
|
|
6709
|
+
upload test_file.bin --to-folder=my_inside_folder --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":100000}' --transfer-info=@json:'{"spawn_delay_sec":2.5,"multi_incr_udp":false}' --progress-bar=yes
|
|
6410
6710
|
```
|
|
6411
6711
|
|
|
6412
6712
|
### Authentication on Server with SSH session
|
|
@@ -6548,11 +6848,11 @@ Native API parameters can be placed in option `query`.
|
|
|
6548
6848
|
|
|
6549
6849
|
Special parameters can be placed in option `query` for "gen3" browse:
|
|
6550
6850
|
|
|
6551
|
-
| Parameter | Description
|
|
6552
|
-
|
|
6553
|
-
| `recursive` | Recursively list files
|
|
6554
|
-
| `max` | Maximum number of files to list |
|
|
6555
|
-
| `self` | Offset in the list
|
|
6851
|
+
| Parameter | Description |
|
|
6852
|
+
|-------------|----------------------------------|
|
|
6853
|
+
| `recursive` | Recursively list files. |
|
|
6854
|
+
| `max` | Maximum number of files to list. |
|
|
6855
|
+
| `self` | Offset in the list. |
|
|
6556
6856
|
|
|
6557
6857
|
Option `node_cache` can be set to `no` to avoid use of folder cache (Redis) and force actual read of file system.
|
|
6558
6858
|
|
|
@@ -6670,13 +6970,13 @@ By providing the `validator` option, offline transfer validation can be done.
|
|
|
6670
6970
|
|
|
6671
6971
|
### Sync
|
|
6672
6972
|
|
|
6673
|
-
There are three commands related to file
|
|
6973
|
+
There are three commands related to file synchronization in `node`:
|
|
6674
6974
|
|
|
6675
6975
|
| Command | `node` | `shares` | `aoc` | `server` | Description |
|
|
6676
|
-
|
|
6677
|
-
| `sync` | Yes
|
|
6678
|
-
| `async` | Yes
|
|
6679
|
-
| `ssync` | Yes
|
|
6976
|
+
|-----|-----|-----|-----|-----|-----------------------------------------------|
|
|
6977
|
+
| `sync` | Yes | Yes | Yes | Yes | Perform a local sync, by executing `async` locally. |
|
|
6978
|
+
| `async` | Yes | | | | Uses API `/async`.<br/>Get status on sync operation on server side, like Aspera Console. |
|
|
6979
|
+
| `ssync` | Yes | | | | Uses API `/asyncs`.<br/>It can start a sync operation on the server side, and monitor only those. |
|
|
6680
6980
|
|
|
6681
6981
|
For details on the `sync` action, refer to [IBM Aspera Sync](#ibm-aspera-sync).
|
|
6682
6982
|
|
|
@@ -6821,17 +7121,17 @@ Bearer tokens can be generated using `ascli` command `bearer_token`: it takes tw
|
|
|
6821
7121
|
- The private key used to sign the token.
|
|
6822
7122
|
- The token information, which is a `Hash` containing the following elements:
|
|
6823
7123
|
|
|
6824
|
-
| Parameter
|
|
6825
|
-
|
|
6826
|
-
| `_scope`
|
|
6827
|
-
| `_validity`
|
|
6828
|
-
| `user_id`
|
|
6829
|
-
| `scope`
|
|
6830
|
-
| `expires_at`
|
|
6831
|
-
| `auth_type`
|
|
6832
|
-
| `group_ids`
|
|
6833
|
-
| `organization_id`
|
|
6834
|
-
| `watermarking_json_base64` | -
|
|
7124
|
+
| Parameter | Default | Type | Description |
|
|
7125
|
+
|----------------------|---------------------------|---------|---------------------------------------|
|
|
7126
|
+
| `_scope` | `user:all` | Special | Either `user:all` or `admin:all` |
|
|
7127
|
+
| `_validity` | 86400 | Special | Validity in seconds from now. |
|
|
7128
|
+
| `user_id` | - | Mandatory | Identifier of user |
|
|
7129
|
+
| `scope` | `node.<access_key>:<_scope>` | Mandatory | API scope<br/>e.g. `node.<access_key>:<node scope>` |
|
|
7130
|
+
| `expires_at` | `now+<_validity>` | Mandatory | Format: `%Y-%m-%dT%H:%M:%SZ`<br/>e.g. `2021-12-31T23:59:59Z` |
|
|
7131
|
+
| `auth_type` | `access_key` | Optional | `access_key`, `node_user` |
|
|
7132
|
+
| `group_ids` | - | Optional | List of group IDs |
|
|
7133
|
+
| `organization_id` | - | Optional | Organization ID |
|
|
7134
|
+
| `watermarking_json_base64` | - | Optional | Watermarking information (not used) |
|
|
6835
7135
|
|
|
6836
7136
|
> [!NOTE]
|
|
6837
7137
|
> For convenience, `ascli` provides additional parameters `_scope` and `_validity`.
|
|
@@ -6950,7 +7250,7 @@ ascli node -N --url=https://... --password="Bearer $(cat bearer.txt)" --root-id=
|
|
|
6950
7250
|
> Add `ascli node` in front of the following commands:
|
|
6951
7251
|
|
|
6952
7252
|
```bash
|
|
6953
|
-
--url=https://tst.example.com/path --password=
|
|
7253
|
+
--url=https://tst.example.com/path --password='Bearer node_bearer_token' --root-id=bearer_root_id access_key do self browse /
|
|
6954
7254
|
access_key create @json:'{"id":"my_username","secret":"my_password_here","storage":{"type":"local","path":"/"}}'
|
|
6955
7255
|
access_key delete my_username
|
|
6956
7256
|
access_key do my_ak_name browse /
|
|
@@ -6961,31 +7261,29 @@ access_key do my_ak_name find my_test_folder
|
|
|
6961
7261
|
access_key do my_ak_name find my_test_folder @re:'\.jpg$'
|
|
6962
7262
|
access_key do my_ak_name find my_test_folder @ruby:'->(f){f["name"].end_with?(".jpg")}'
|
|
6963
7263
|
access_key do my_ak_name mkdir /tst_nd_ak
|
|
6964
|
-
access_key do my_ak_name mkfile /mkfile.txt
|
|
7264
|
+
access_key do my_ak_name mkfile /mkfile.txt 'hello world'
|
|
6965
7265
|
access_key do my_ak_name mklink /mklink.txt --query=@json:'{"target":"/mkfile.txt","target_node_id":"123"}'
|
|
6966
7266
|
access_key do my_ak_name node_info /
|
|
6967
7267
|
access_key do my_ak_name rename /tst_nd_ak test_nd_ak2
|
|
6968
7268
|
access_key do my_ak_name show %id:1
|
|
6969
|
-
access_key do my_ak_name show /test_nd_ak3
|
|
6970
7269
|
access_key do my_ak_name upload 'faux:///test_nd_ak3?100k' --default-ports=no
|
|
6971
|
-
access_key do self permission %id:
|
|
7270
|
+
access_key do self permission %id:bearer_root_id create @json:'{"access_type":"user","access_id":"666"}'
|
|
7271
|
+
access_key do self permission / delete 1
|
|
6972
7272
|
access_key do self permission / show 1
|
|
6973
|
-
access_key do self show / --fields=id --output=root_id
|
|
6974
7273
|
access_key list
|
|
6975
7274
|
access_key set_bearer_key self @file:my_private_key
|
|
6976
7275
|
access_key show %id:self
|
|
6977
7276
|
api_details
|
|
6978
7277
|
asperabrowser
|
|
6979
|
-
async bandwidth %name:
|
|
6980
|
-
async counters %name:
|
|
7278
|
+
async bandwidth %name:my_sync_session_name
|
|
7279
|
+
async counters %name:my_sync_session_name
|
|
6981
7280
|
async delete ALL
|
|
6982
|
-
async files %name:
|
|
6983
|
-
async files %name:
|
|
7281
|
+
async files %name:my_sync_session_name
|
|
7282
|
+
async files %name:my_sync_session_name --once-only=yes
|
|
6984
7283
|
async list
|
|
6985
|
-
async show %name:
|
|
7284
|
+
async show %name:my_sync_session_name
|
|
6986
7285
|
async show ALL
|
|
6987
7286
|
basic_token
|
|
6988
|
-
bearer_token @file:my_private_key @json:'{"user_id":"666"}' --output=bearer_666
|
|
6989
7287
|
browse / --log-level=trace2
|
|
6990
7288
|
cat my_upload_folder/test_file.bin
|
|
6991
7289
|
central file list
|
|
@@ -6998,7 +7296,7 @@ health
|
|
|
6998
7296
|
info --fpac='function FindProxyForURL(url,host){return "DIRECT"}'
|
|
6999
7297
|
license
|
|
7000
7298
|
mkdir my_upload_folder/a_folder
|
|
7001
|
-
mkfile my_upload_folder/a_file1
|
|
7299
|
+
mkfile my_upload_folder/a_file1 'hello world'
|
|
7002
7300
|
mklink my_upload_folder/a_folder my_upload_folder/tdlink
|
|
7003
7301
|
rename my_upload_folder a_file1 a_file
|
|
7004
7302
|
search / --query=@json:'{"sort":"mtime"}'
|
|
@@ -7007,6 +7305,7 @@ service delete service1
|
|
|
7007
7305
|
service list
|
|
7008
7306
|
slash
|
|
7009
7307
|
space /
|
|
7308
|
+
spec
|
|
7010
7309
|
ssync bandwidth %name:my_node_sync
|
|
7011
7310
|
ssync counters %name:my_node_sync
|
|
7012
7311
|
ssync create @json:'{"configuration":{"name":"my_node_sync","local":{"path":"my_local_path_real"},"remote":{"host":"my_host","port":my_port,"user":"my_username","pass":"my_password_here","path":"my_remote_path"}}}'
|
|
@@ -7020,16 +7319,20 @@ ssync stop %name:my_node_sync
|
|
|
7020
7319
|
ssync summary %name:my_node_sync
|
|
7021
7320
|
stream list
|
|
7022
7321
|
sync admin status /data/local_sync
|
|
7023
|
-
sync pull /aspera-test-dir-tiny --to-folder=/data/local_sync @json:'{"name":"
|
|
7322
|
+
sync pull /aspera-test-dir-tiny --to-folder=/data/local_sync @json:'{"name":"my_sync_session_name","reset":true}'
|
|
7024
7323
|
sync pull /aspera-test-dir-tiny --to-folder=/data/local_sync @json:'{"reset":true}'
|
|
7025
|
-
transfer
|
|
7324
|
+
transfer bandwidth_average
|
|
7325
|
+
transfer cancel nd_xfer_id
|
|
7026
7326
|
transfer list --query=@json:'{"active_only":true}'
|
|
7027
7327
|
transfer list --query=@json:'{"reset":true}' --once-only=yes
|
|
7328
|
+
transfer modify nd_xfer_id @json:'{"target_rate_kbps":10000}'
|
|
7028
7329
|
transfer sessions
|
|
7330
|
+
transfer show nd_xfer_id
|
|
7029
7331
|
transport
|
|
7332
|
+
upload 'faux:///testfile1?1m' --to-folder=my_local_path
|
|
7030
7333
|
upload --to-folder=my_upload_folder --sources=@ts --ts=@json:'{"paths":[{"source":"/aspera-test-dir-small/10MB.2"}],"precalculate_job_size":true}' --transfer=node --transfer-info=@json:'{"url":"https://node.example.com/path@","username":"my_username","password":"my_password_here"}'
|
|
7031
7334
|
upload --username=my_ak_name --password=my_ak_secret test_file.bin
|
|
7032
|
-
upload
|
|
7335
|
+
upload my_mxf my_docx --ts=@json:'{"target_rate_kbps":1000000,"resume_policy":"none"}'
|
|
7033
7336
|
watch_folder list
|
|
7034
7337
|
```
|
|
7035
7338
|
|
|
@@ -7044,10 +7347,10 @@ The `node` plugin supports Open Telemetry (OTel) for monitoring and tracing.
|
|
|
7044
7347
|
|
|
7045
7348
|
The command expects the following parameters provided as a `Hash` positional parameter:
|
|
7046
7349
|
|
|
7047
|
-
| Parameter | Type | Default | Description
|
|
7048
|
-
|
|
7049
|
-
| `url` | `String` | - | URL of the Instana HTTPS backend for OTel.
|
|
7050
|
-
| `key` | `String` | - | Agent key for the backend.
|
|
7350
|
+
| Parameter | Type | Default | Description |
|
|
7351
|
+
|-------------|----------|---------|----------------------------------------------|
|
|
7352
|
+
| `url` | `String` | - | URL of the Instana HTTPS backend for OTel. |
|
|
7353
|
+
| `key` | `String` | - | Agent key for the backend. |
|
|
7051
7354
|
| `interval` | `Float` | 10 | Polling interval in seconds.<br/>`0` for single shot. |
|
|
7052
7355
|
|
|
7053
7356
|
To retrieve OTel backend information: Go to the Instana web interface, **More** → **Agents** → **Docker** and identify the agent endpoint and key, e.g. `endpoint=ingress-blue-saas.instana.io`.
|
|
@@ -7085,7 +7388,9 @@ IBM Aspera's newer self-managed application.
|
|
|
7085
7388
|
| `boot` | Use authentication token copied from browser (experimental) |
|
|
7086
7389
|
|
|
7087
7390
|
> [!TIP]
|
|
7088
|
-
> If you have a Faspex 5 public link, provide it,
|
|
7391
|
+
> If you have a Faspex 5 public link, provide it, as-is, through the option `url`.
|
|
7392
|
+
|
|
7393
|
+
### Faspex 5 quick start with wizard
|
|
7089
7394
|
|
|
7090
7395
|
For a quick start, one can use the wizard, which will help to create an [Option Preset](#option-preset):
|
|
7091
7396
|
|
|
@@ -7093,8 +7398,15 @@ For a quick start, one can use the wizard, which will help to create an [Option
|
|
|
7093
7398
|
ascli config wizard
|
|
7094
7399
|
```
|
|
7095
7400
|
|
|
7401
|
+
Then, answer questions interactively:
|
|
7402
|
+
|
|
7096
7403
|
```text
|
|
7097
7404
|
argument: url> faspex5.example.com
|
|
7405
|
+
```
|
|
7406
|
+
|
|
7407
|
+
Potentially, multiple applications may be detected, or if only Faspex is detected, it would skip this step:
|
|
7408
|
+
|
|
7409
|
+
```text
|
|
7098
7410
|
Multiple applications detected:
|
|
7099
7411
|
+---------+-------------------------------------------+-------------+
|
|
7100
7412
|
| product | url | version |
|
|
@@ -7103,12 +7415,28 @@ Multiple applications detected:
|
|
|
7103
7415
|
| server | ssh://faspex5.example.com:22 | OpenSSH_8.3 |
|
|
7104
7416
|
+---------+-------------------------------------------+-------------+
|
|
7105
7417
|
product> faspex5
|
|
7418
|
+
```
|
|
7419
|
+
|
|
7420
|
+
When Faspex is detected, it would ask for the path to a private key.
|
|
7421
|
+
If you don't have a private key, then leave that field blank, and it will generate one or use one that was previously generated.
|
|
7422
|
+
|
|
7423
|
+
```test
|
|
7106
7424
|
Using: Faspex at https://faspex5.example.com/aspera/faspex
|
|
7107
7425
|
Please provide the path to your private RSA key, or nothing to generate one:
|
|
7108
7426
|
option: key_path>
|
|
7109
7427
|
Using existing key:
|
|
7110
7428
|
/Users/someuser/.aspera/ascli/my_key
|
|
7429
|
+
```
|
|
7430
|
+
|
|
7431
|
+
Then, the email of the user shall be provided:
|
|
7432
|
+
|
|
7433
|
+
```text
|
|
7111
7434
|
option: username> someuser@example.com
|
|
7435
|
+
```
|
|
7436
|
+
|
|
7437
|
+
The administrator of Faspex shall provide you with a `client_id`, as specified below.
|
|
7438
|
+
|
|
7439
|
+
```text
|
|
7112
7440
|
Ask the ascli client ID and secret to your Administrator.
|
|
7113
7441
|
Admin should login to: https://faspex5.example.com/aspera/faspex
|
|
7114
7442
|
Navigate to: :: → Admin → Configurations → API clients
|
|
@@ -7132,10 +7460,16 @@ Saving configuration file.
|
|
|
7132
7460
|
```
|
|
7133
7461
|
|
|
7134
7462
|
> [!NOTE]
|
|
7135
|
-
> Paste the entire public key, including the BEGIN and END lines, into the user profile.
|
|
7463
|
+
> Paste the entire public key, including the BEGIN and END lines, into the user's profile.
|
|
7136
7464
|
|
|
7137
7465
|
For more information on the JWT method, refer to the section below.
|
|
7138
7466
|
|
|
7467
|
+
If you have generated a private key with the wizard and lost the public key, you can retrieve the public key like this:
|
|
7468
|
+
|
|
7469
|
+
```shell
|
|
7470
|
+
ascli faspex5 --show-config --show-secrets=yes --fields=private_key | ascli conf pubkey @stdin: --show-secrets=yes
|
|
7471
|
+
```
|
|
7472
|
+
|
|
7139
7473
|
### Faspex 5 JWT authentication
|
|
7140
7474
|
|
|
7141
7475
|
This is the general purpose and **recommended** method to use.
|
|
@@ -7156,15 +7490,15 @@ Activation is in two steps:
|
|
|
7156
7490
|
|
|
7157
7491
|
- The user will authenticate with a private key and set the public key in his Faspex 5 profile.
|
|
7158
7492
|
|
|
7159
|
-
> [!TIP]
|
|
7160
|
-
> If you don’t have a private key, see [Private Key](#private-key) to generate one.
|
|
7161
|
-
|
|
7162
7493
|
This operation is done by each user using the CLI.
|
|
7163
7494
|
|
|
7164
7495
|
- As a user, click the user logo located to the left of the app switcher in the top-right corner.
|
|
7165
7496
|
- Select `Account Settings`.
|
|
7166
7497
|
- At the bottom, in the `Public key in PEM format` field, paste the **public key** that corresponds to the private key assigned to your account.
|
|
7167
7498
|
|
|
7499
|
+
> [!TIP]
|
|
7500
|
+
> If you don’t have a private key, see [Private Key](#private-key) to generate one.
|
|
7501
|
+
|
|
7168
7502
|
Then use these options:
|
|
7169
7503
|
|
|
7170
7504
|
```text
|
|
@@ -7210,6 +7544,16 @@ The user will use the following options:
|
|
|
7210
7544
|
--redirect-uri=https://127.0.0.1:8888
|
|
7211
7545
|
```
|
|
7212
7546
|
|
|
7547
|
+
### Faspex 5 public link authentication
|
|
7548
|
+
|
|
7549
|
+
If all you have is a public link received by email or other, you can still do authorized actins with it.
|
|
7550
|
+
|
|
7551
|
+
For example, for a public link to post a package:
|
|
7552
|
+
|
|
7553
|
+
```shell
|
|
7554
|
+
ascli faspex5 packages send --url='https://faspex5.example.com/?context=_some_long_string_here_'
|
|
7555
|
+
```
|
|
7556
|
+
|
|
7213
7557
|
### Faspex 5 bootstrap authentication
|
|
7214
7558
|
|
|
7215
7559
|
For `boot` method: (will be removed in future)
|
|
@@ -7242,8 +7586,8 @@ admin distribution_lists delete %name:test4
|
|
|
7242
7586
|
admin distribution_lists list --query=@json:'{"type":"global"}'
|
|
7243
7587
|
admin email_notifications list
|
|
7244
7588
|
admin email_notifications show welcome_email
|
|
7245
|
-
admin event
|
|
7246
|
-
admin event
|
|
7589
|
+
admin event application --query=@ruby:'{"event_type[]"=>["login_success"],"created_at_start"=>(Time.now.utc-60).strftime("%Y-%m-%dT%H:%M:%S.%LZ")}'
|
|
7590
|
+
admin event webhook
|
|
7247
7591
|
admin jobs list --query=@json:'{"job_type":"email","status":"failed"}' --fields=id,error_desc
|
|
7248
7592
|
admin metadata_profiles list
|
|
7249
7593
|
admin node browse %name:Local
|
|
@@ -7258,7 +7602,7 @@ admin saml_configs list
|
|
|
7258
7602
|
admin shared_inboxes invite %name:my_shared_box_name johnny@example.com
|
|
7259
7603
|
admin shared_inboxes list
|
|
7260
7604
|
admin shared_inboxes list --query=@json:'{"all":true}'
|
|
7261
|
-
admin shared_inboxes members %name:my_shared_box_name create %name:john@example.com
|
|
7605
|
+
admin shared_inboxes members %name:my_shared_box_name create %name:john@example.com submit_only
|
|
7262
7606
|
admin shared_inboxes members %name:my_shared_box_name delete %name:john@example.com
|
|
7263
7607
|
admin shared_inboxes members %name:my_shared_box_name delete %name:johnny@example.com
|
|
7264
7608
|
admin shared_inboxes members %name:my_shared_box_name list
|
|
@@ -7268,38 +7612,40 @@ admin smtp show
|
|
|
7268
7612
|
admin smtp test my_email_external
|
|
7269
7613
|
admin workgroups list
|
|
7270
7614
|
bearer_token
|
|
7271
|
-
gateway
|
|
7272
|
-
health
|
|
7615
|
+
gateway @json:'{"url":"https://localhost:12346/aspera/faspex"}'
|
|
7616
|
+
health --url=https://faspex5.example.com/path
|
|
7273
7617
|
invitation list
|
|
7274
7618
|
invitations create @json:'{"email_address":"aspera.user1+u@gmail.com"}'
|
|
7275
|
-
packages browse
|
|
7276
|
-
packages delete
|
|
7619
|
+
packages browse f5_package_id --query=@json:'{"recursive":true}'
|
|
7620
|
+
packages delete f5_package_id
|
|
7277
7621
|
packages list --box=ALL
|
|
7278
7622
|
packages list --box=my_shared_box_name
|
|
7279
7623
|
packages list --box=my_workgroup --group-type=workgroups
|
|
7280
7624
|
packages list --box=outbox --fields=DEF,sender.email,recipients.0.recipient_type
|
|
7281
7625
|
packages list --query=@json:'{"mailbox":"inbox","status":"completed"}'
|
|
7282
|
-
packages receive --box=my_shared_box_name
|
|
7626
|
+
packages receive --box=my_shared_box_name f5_pack_shboxc --to-folder=.
|
|
7283
7627
|
packages receive --box=my_workgroup --group-type=workgroups workgroup_package_id1 --to-folder=.
|
|
7284
7628
|
packages receive ALL --once-only=yes --to-folder=.
|
|
7285
7629
|
packages receive INIT --once-only=yes
|
|
7286
|
-
packages receive
|
|
7287
|
-
packages send --shared-folder=%name:my_shared_folder_name @json:'{"title":"test title","recipients":["my_email_internal"]}' my_shared_folder_file --fields=id --display=data --output=f5_pack_id
|
|
7630
|
+
packages receive f5_package_id --to-folder=. --ts=@json:'{"content_protection_password":"my_secret_here"}'
|
|
7288
7631
|
packages send --url=my_public_link_send_f5_user @json:'{"title":"test title"}' test_file.bin
|
|
7289
7632
|
packages send --url=my_public_link_send_shared_box @json:'{"title":"test title"}' test_file.bin
|
|
7290
7633
|
packages send @json:'{"title":"test title","recipients":["my_shared_box_name"],"metadata":{"Options":"Opt1","TextInput":"example text"}}' test_file.bin
|
|
7291
7634
|
packages send @json:'{"title":"test title","recipients":["my_workgroup"]}' test_file.bin
|
|
7292
7635
|
packages send @json:'{"title":"test title","recipients":[{"name":"my_username"}]my_meta}' test_file.bin --ts=@json:'{"content_protection_password":"my_secret_here"}'
|
|
7293
|
-
packages
|
|
7636
|
+
packages send @json:'{"title":"test_webhook_ascli","recipients":["my_shared_box_name"]}' 'faux:///test1?1m'
|
|
7637
|
+
packages show --box=my_shared_box_name f5_pack_shboxc
|
|
7294
7638
|
packages show --box=my_workgroup --group-type=workgroups workgroup_package_id1
|
|
7295
|
-
packages show
|
|
7296
|
-
packages status
|
|
7297
|
-
|
|
7639
|
+
packages show f5_package_id
|
|
7640
|
+
packages status f5_p3a @list:,failed,completed
|
|
7641
|
+
packages status f5_package_id
|
|
7642
|
+
postprocessing @json:'{"url":"https://localhost:8553/asclihook","script_folder":"$(TST)","cert":"$(TMP / "localhost.p12")","key":"changeit"}'
|
|
7298
7643
|
shared browse %name:my_src
|
|
7299
7644
|
shared list
|
|
7300
7645
|
shared_folders browse %name:my_shared_folder_name
|
|
7301
7646
|
shared_folders list
|
|
7302
7647
|
user account
|
|
7648
|
+
user account --query.expand=true
|
|
7303
7649
|
user profile modify @json:'{"preference":{"connect_disabled":false}}'
|
|
7304
7650
|
user profile show
|
|
7305
7651
|
version
|
|
@@ -7319,7 +7665,7 @@ By default, package operations (`send`, `receive`, `list`) are performed on the
|
|
|
7319
7665
|
To select another inbox, use option `box` with one of the following values:
|
|
7320
7666
|
|
|
7321
7667
|
| `box` | Comment |
|
|
7322
|
-
|
|
7668
|
+
|---------------------|----------------------------------------------------------------------|
|
|
7323
7669
|
| `inbox` | Default |
|
|
7324
7670
|
| `inbox_history` | |
|
|
7325
7671
|
| `inbox_all` | |
|
|
@@ -7329,8 +7675,8 @@ To select another inbox, use option `box` with one of the following values:
|
|
|
7329
7675
|
| `pending` | |
|
|
7330
7676
|
| `pending_history` | |
|
|
7331
7677
|
| `all` | |
|
|
7332
|
-
| `ALL` |
|
|
7333
|
-
| Open value |
|
|
7678
|
+
| `ALL` | All inboxes of all users. **admin only**. |
|
|
7679
|
+
| Open value | If `group_type` is `shared_inboxes`: name of a shared inbox (default)<br/>If `group_type` is `workgroups`: workgroup name |
|
|
7334
7680
|
|
|
7335
7681
|
> [!NOTE]
|
|
7336
7682
|
> In case the name of the `box` is an open value, use option `group_type` set to either `shared_inboxes` or `workgroups`.
|
|
@@ -7386,6 +7732,14 @@ If the lookup needs to be only on certain types, you can specify the field: `rec
|
|
|
7386
7732
|
{"title":"test title","recipient_types":"user","recipients":["user1@example.com","user2@example.com"]}
|
|
7387
7733
|
```
|
|
7388
7734
|
|
|
7735
|
+
To enable content protection (CSEAR), set parameter `ear_enabled` to `true` in the package creation payload (refer to Faspex package creation API).
|
|
7736
|
+
|
|
7737
|
+
The following error is returned by Faspex, if CSEAR was not specified in the package creation and if it is configured as mandatory on the server:
|
|
7738
|
+
|
|
7739
|
+
```text
|
|
7740
|
+
the provided encryption value (no) does not match the expected server side encryption value (yes)
|
|
7741
|
+
```
|
|
7742
|
+
|
|
7389
7743
|
### Faspex 5: Send a package with metadata
|
|
7390
7744
|
|
|
7391
7745
|
It's the same as sending a package, but with an extra field `metadata` in the package info.
|
|
@@ -7403,14 +7757,14 @@ Option `box` can be used to list packages from a specific box (see [Inbox Select
|
|
|
7403
7757
|
|
|
7404
7758
|
Option `query` can be used to filter the list of packages, based on native API parameters, directly sent to [Faspex 5 API `GET /packages`](https://developer.ibm.com/apis/catalog/aspera--ibm-aspera-faspex-5-0-api/api/API--aspera--ibm-aspera-faspex-api#getAllPackages).
|
|
7405
7759
|
|
|
7406
|
-
| Parameter | Type
|
|
7407
|
-
|
|
7408
|
-
| `offset
|
|
7409
|
-
| `limit`
|
|
7410
|
-
| `q`
|
|
7411
|
-
| ...
|
|
7412
|
-
| `max`
|
|
7413
|
-
| `pmax`
|
|
7760
|
+
| Parameter | Type | Description |
|
|
7761
|
+
|---------|---------|-----------------------------------------------------------------------|
|
|
7762
|
+
| `offset`| Native | Managed by `ascli`: Offset of first package. Default: 0 |
|
|
7763
|
+
| `limit` | Native | Managed by `ascli`: # of packages per API call. Default: 100 |
|
|
7764
|
+
| `q` | Native | General search string<br/>case-insensitive, matches if value is contained in several fields |
|
|
7765
|
+
| ... | Native | Other native parameters are supported (Refer to API documentation) |
|
|
7766
|
+
| `max` | Special | Maximum number of items to retrieve (stop pages when the maximum is passed) |
|
|
7767
|
+
| `pmax` | Special | Maximum number of pages to request (stop pages when the maximum is passed) |
|
|
7414
7768
|
|
|
7415
7769
|
A **Command Parameter** in last position, of type `Proc`, can be used to filter the list of packages.
|
|
7416
7770
|
This advantage of this method is that the expression can be any test, even complex, as it is Ruby code.
|
|
@@ -7438,15 +7792,15 @@ By default, paging is used.
|
|
|
7438
7792
|
|
|
7439
7793
|
Option `query` is available with parameters supported by the API and `ascli` :
|
|
7440
7794
|
|
|
7441
|
-
| Parameter
|
|
7442
|
-
|
|
7443
|
-
| `paging`
|
|
7444
|
-
| `recursive`
|
|
7445
|
-
| `max`
|
|
7446
|
-
| `filter`
|
|
7447
|
-
| `offset`
|
|
7448
|
-
| `limit`
|
|
7449
|
-
| `per_page
|
|
7795
|
+
| Parameter | Evaluation | Default | Description |
|
|
7796
|
+
|-----------|--------------|-------------------| ----------------------------------------|
|
|
7797
|
+
| `paging` | `ascli` | `true` | Use paging API. |
|
|
7798
|
+
| `recursive`| `ascli` | `false` | List inside folders. |
|
|
7799
|
+
| `max` | `ascli` | - | Maximum number of items. |
|
|
7800
|
+
| `filter` | API | `{"basenames":[]}`| Refer to API doc. |
|
|
7801
|
+
| `offset` | API (legacy) | `0` | Index of first item. |
|
|
7802
|
+
| `limit` | API (legacy) | `500` | Number of items in one API call result. |
|
|
7803
|
+
| `per_page`| API (paging) | `500` | Number of items in one API call result. |
|
|
7450
7804
|
|
|
7451
7805
|
### Faspex 5: Content of a received Package
|
|
7452
7806
|
|
|
@@ -7743,8 +8097,8 @@ A user can receive a package because the recipient is:
|
|
|
7743
8097
|
|
|
7744
8098
|
As inboxes may be large, it is possible to use the following query parameters:
|
|
7745
8099
|
|
|
7746
|
-
| Parameter | Evaluation | Description
|
|
7747
|
-
|
|
8100
|
+
| Parameter | Evaluation | Description |
|
|
8101
|
+
|--------------|------------|----------------------------------------------------------------------|
|
|
7748
8102
|
| `count` | API | Number of items in one API call result (default=0, equivalent to 10) |
|
|
7749
8103
|
| `page` | API | ID of page in call (default=0) |
|
|
7750
8104
|
| `startIndex` | API | Index of item to start (default=0) |
|
|
@@ -7887,27 +8241,23 @@ ascli faspex packages recv ALL --once-only=yes --lock-port=12345
|
|
|
7887
8241
|
|
|
7888
8242
|
```bash
|
|
7889
8243
|
address_book
|
|
7890
|
-
dropbox list --recipient=
|
|
8244
|
+
dropbox list --recipient='*my_dbx'
|
|
7891
8245
|
health
|
|
7892
8246
|
login_methods
|
|
7893
8247
|
me
|
|
7894
|
-
package list --box=sent --query.max=1 --fields=package_id --display=data --format=csv --output=f4_prs2
|
|
7895
|
-
package list --query.max=1 --fields=package_id --display=data --format=csv --output=f4_prs1
|
|
7896
8248
|
package list --query.max=5
|
|
7897
|
-
package list --recipient="*my_dbx" --format=csv --fields=package_id --query.max=1 --output=f4_db_id1
|
|
7898
|
-
package list --recipient="*my_wkg" --format=csv --fields=package_id --query.max=1 --output=f4_db_id2
|
|
7899
|
-
package receive --to-folder=. --link=https://app.example.com/recv_from_user_path
|
|
7900
8249
|
package receive ALL --once-only=yes --to-folder=. --query=@json:'{"max":10}'
|
|
7901
|
-
package receive
|
|
7902
|
-
package receive
|
|
7903
|
-
package receive
|
|
7904
|
-
package receive
|
|
7905
|
-
package
|
|
7906
|
-
package send --delivery-info=@json:'{"title":"
|
|
7907
|
-
package send --delivery-info=@json:'{"title":"
|
|
7908
|
-
package send --delivery-info=@json:'{"title":"
|
|
7909
|
-
package send --
|
|
7910
|
-
package send --link=https://app.example.com/
|
|
8250
|
+
package receive f4_db1c --recipient='*my_dbx' --to-folder=.
|
|
8251
|
+
package receive f4_db1g --recipient='*my_wkg' --to-folder=.
|
|
8252
|
+
package receive f4_pria --to-folder=.
|
|
8253
|
+
package receive f4_prs --to-folder=.
|
|
8254
|
+
package receive f4_prsc --to-folder=. --box=sent
|
|
8255
|
+
package send --delivery-info=@json:'{"title":"package title","recipients":["my_email_internal","my_username"]}' test_file.bin
|
|
8256
|
+
package send --delivery-info=@json:'{"title":"package title","recipients":["my_email_internal"]}' --remote-source=%name:my_src sample_source.txt
|
|
8257
|
+
package send --delivery-info=@json:'{"title":"package title","recipients":[*my_dbx]}' test_file.bin
|
|
8258
|
+
package send --delivery-info=@json:'{"title":"package title","recipients":[*my_wkg]}' test_file.bin
|
|
8259
|
+
package send --link=https://app.example.com/send_to_dropbox_path --delivery-info=@json:'{"title":"package title"}' test_file.bin
|
|
8260
|
+
package send --link=https://app.example.com/send_to_user_path --delivery-info=@json:'{"title":"package title"}' test_file.bin
|
|
7911
8261
|
source info %name:my_src --storage=@preset:faspex4_storage
|
|
7912
8262
|
source list
|
|
7913
8263
|
source node %name:my_src br / --storage=@preset:faspex4_storage
|
|
@@ -7931,17 +8281,17 @@ The payload for creation is the same as for the API, parameters are provided as
|
|
|
7931
8281
|
|
|
7932
8282
|
Example: Create a Node: Attributes are like API:
|
|
7933
8283
|
|
|
7934
|
-
| Attribute
|
|
7935
|
-
|
|
7936
|
-
| `name`
|
|
7937
|
-
| `host`
|
|
7938
|
-
| `api_username` | Yes
|
|
7939
|
-
| `api_password` | Yes
|
|
7940
|
-
| `port`
|
|
7941
|
-
| `ssl`
|
|
7942
|
-
| `verify_ssl` |
|
|
7943
|
-
| `timeout` |
|
|
7944
|
-
| `open_timeout` |
|
|
8284
|
+
| Attribute | Required | Default |
|
|
8285
|
+
|--------------|----------|---------|
|
|
8286
|
+
| `name` | Yes | |
|
|
8287
|
+
| `host` | Yes | |
|
|
8288
|
+
| `api_username` | Yes | |
|
|
8289
|
+
| `api_password` | Yes | |
|
|
8290
|
+
| `port` | | `9092` |
|
|
8291
|
+
| `ssl` | | `true` |
|
|
8292
|
+
| `verify_ssl` | | `false` |
|
|
8293
|
+
| `timeout` | | `30s` |
|
|
8294
|
+
| `open_timeout` | | `10s` |
|
|
7945
8295
|
|
|
7946
8296
|
Example: Create a share and add a user to it.
|
|
7947
8297
|
|
|
@@ -7964,12 +8314,12 @@ ascli shares admin share user_permissions $share_id create @json:'{"user_id":'$u
|
|
|
7964
8314
|
admin group all list
|
|
7965
8315
|
admin node list
|
|
7966
8316
|
admin share list --fields=DEF,-status,status_message
|
|
7967
|
-
admin share user_permissions
|
|
7968
|
-
admin user all app_authorizations
|
|
7969
|
-
admin user all app_authorizations
|
|
8317
|
+
admin share user_permissions %name:my_share list
|
|
8318
|
+
admin user all app_authorizations %username:my_username modify @json:'{"app_login":true}'
|
|
8319
|
+
admin user all app_authorizations %username:my_username show
|
|
7970
8320
|
admin user all list
|
|
7971
|
-
admin user all share_permissions
|
|
7972
|
-
admin user all share_permissions
|
|
8321
|
+
admin user all share_permissions %username:my_username list
|
|
8322
|
+
admin user all share_permissions %username:my_username show %name:my_share
|
|
7973
8323
|
admin user ldap add the_name
|
|
7974
8324
|
admin user local list
|
|
7975
8325
|
admin user saml import @json:'{"id":"the_id","name_id":"the_name"}'
|
|
@@ -7981,10 +8331,10 @@ files download --to-folder=. my_share_folder/test_file.bin my_share_folder/test_
|
|
|
7981
8331
|
files mkdir my_share_folder/new_folder
|
|
7982
8332
|
files sync push /data/local_sync --to-folder=my_share_folder/synctst
|
|
7983
8333
|
files sync push /data/local_sync --to-folder=my_share_folder/synctst @json:'{"reset":true}'
|
|
7984
|
-
files upload
|
|
7985
|
-
files upload --to-folder=my_share_folder sendfolder --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@","synchronous":true,"api_version":"v1","upload_chunk_size":100000}'
|
|
8334
|
+
files upload 'faux:///testfile?1m' --to-folder=my_share_folder --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@","synchronous":true,"api_version":"v1","upload_chunk_size":100000}'
|
|
7986
8335
|
files upload --to-folder=my_share_folder test_file.bin
|
|
7987
8336
|
files upload --to-folder=my_share_folder test_file.bin --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@"}'
|
|
8337
|
+
files upload sendfolder --to-folder=my_share_folder --transfer=httpgw --transfer-info=@json:'{"url":"https://tst.example.com/path@","synchronous":true,"api_version":"v1","upload_chunk_size":100000}'
|
|
7988
8338
|
health
|
|
7989
8339
|
```
|
|
7990
8340
|
|
|
@@ -8012,7 +8362,7 @@ transfer current list --query.filter='(transfer_name contain aoc)'
|
|
|
8012
8362
|
transfer current list --query=@json:'{"filter1":"transfer_name","comp1":"contain","val1":"aoc"}'
|
|
8013
8363
|
transfer current show console_xfer_id
|
|
8014
8364
|
transfer smart list
|
|
8015
|
-
transfer smart sub my_smart_id
|
|
8365
|
+
transfer smart sub my_smart_id @: source.paths.0=my_smart_file source_type=user_selected
|
|
8016
8366
|
```
|
|
8017
8367
|
|
|
8018
8368
|
## Plugin: `orchestrator`:IBM Aspera Orchestrator
|
|
@@ -8039,39 +8389,45 @@ workflow status my_workflow_id
|
|
|
8039
8389
|
|
|
8040
8390
|
## Plugin: `cos`: IBM Cloud Object Storage
|
|
8041
8391
|
|
|
8042
|
-
|
|
8043
|
-
|
|
8044
|
-
|
|
8392
|
+
IBM Cloud Object Storage supports high-speed transfers using the FASP protocol.
|
|
8393
|
+
These transfers leverage the same service used by Aspera on Cloud, called the Aspera Transfer Service (ATS).
|
|
8394
|
+
You can check the list of available ATS regions here: <https://status.aspera.io>.
|
|
8395
|
+
There are two ways to provide credentials:
|
|
8396
|
+
|
|
8397
|
+
- Using existing credentials
|
|
8045
8398
|
|
|
8046
|
-
|
|
8047
|
-
|
|
8048
|
-
|
|
8399
|
+
If you already have the endpoint, API key, and Resource Instance ID (CRN), use this method.
|
|
8400
|
+
|
|
8401
|
+
- Using IBM Cloud Console access
|
|
8402
|
+
|
|
8403
|
+
If you do not have credentials but have access to the IBM Cloud Console, use this alternative method.
|
|
8049
8404
|
|
|
8050
8405
|
### Using endpoint, API key and Resource Instance ID (CRN)
|
|
8051
8406
|
|
|
8052
|
-
If you have
|
|
8407
|
+
If you already have these parameters, provide the following options to `ascli`:
|
|
8053
8408
|
|
|
8054
|
-
| Option | Description
|
|
8055
|
-
|
|
8056
|
-
| `bucket` | Bucket name
|
|
8409
|
+
| Option | Description |
|
|
8410
|
+
|------------|---------------------------------------------------|
|
|
8411
|
+
| `bucket` | Bucket name |
|
|
8057
8412
|
| `endpoint` | Storage endpoint URL<br/>e.g. `https://s3.hkg02.cloud-object-storage.appdomain.cloud` |
|
|
8058
|
-
| `apikey` | API Key
|
|
8059
|
-
| `crn` | Resource instance ID
|
|
8413
|
+
| `apikey` | API Key |
|
|
8414
|
+
| `crn` | Resource instance ID |
|
|
8060
8415
|
|
|
8061
|
-
|
|
8416
|
+
Example: Create a Default Configuration
|
|
8062
8417
|
|
|
8063
8418
|
```shell
|
|
8064
8419
|
ascli config 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
|
|
8065
8420
|
ascli config preset set default cos mycos
|
|
8066
8421
|
```
|
|
8067
8422
|
|
|
8068
|
-
|
|
8423
|
+
Once configured, proceed to the [transfer example](#operations-transfers).
|
|
8069
8424
|
|
|
8070
8425
|
### Using service credential file
|
|
8071
8426
|
|
|
8072
|
-
If you are the COS administrator and
|
|
8073
|
-
|
|
8074
|
-
|
|
8427
|
+
If you are the COS administrator and do not yet have credentials,
|
|
8428
|
+
you can create them directly from the IBM Cloud Console (Web UI):
|
|
8429
|
+
|
|
8430
|
+
Steps:
|
|
8075
8431
|
|
|
8076
8432
|
- → Navigation Menu
|
|
8077
8433
|
- → [Resource List](https://cloud.ibm.com/resources)
|
|
@@ -8081,7 +8437,7 @@ Navigate to:
|
|
|
8081
8437
|
- → New credentials (Leave default role: Writer, no special options)
|
|
8082
8438
|
- → Copy to clipboard
|
|
8083
8439
|
|
|
8084
|
-
|
|
8440
|
+
Save the copied JSON value to a file, for example: `$HOME/cos_service_creds.json`
|
|
8085
8441
|
|
|
8086
8442
|
or using the IBM Cloud CLI:
|
|
8087
8443
|
|
|
@@ -8090,9 +8446,10 @@ ibmcloud resource service-keys
|
|
|
8090
8446
|
ibmcloud resource service-key _service_key_name_here_ --output JSON|jq '.[0].credentials'>$HOME/service_creds.json
|
|
8091
8447
|
```
|
|
8092
8448
|
|
|
8093
|
-
|
|
8449
|
+
> [!NOTE]
|
|
8450
|
+
> If `jq` is not installed, you can manually extract the credentials section from the JSON output.
|
|
8094
8451
|
|
|
8095
|
-
|
|
8452
|
+
The service credential file consists of the following structure:
|
|
8096
8453
|
|
|
8097
8454
|
```json
|
|
8098
8455
|
{
|
|
@@ -8110,33 +8467,32 @@ It consists in the following structure:
|
|
|
8110
8467
|
}
|
|
8111
8468
|
```
|
|
8112
8469
|
|
|
8113
|
-
The field
|
|
8470
|
+
The field mappings are as follows:
|
|
8114
8471
|
|
|
8115
|
-
|
|
8472
|
+
- `resource_instance_id` → option `crn`
|
|
8473
|
+
- `apikey` → option `apikey`
|
|
8116
8474
|
|
|
8117
8475
|
> [!NOTE]
|
|
8118
|
-
> Endpoints for regions can be found by querying the `endpoints` URL
|
|
8476
|
+
> Endpoints for regions can be found by querying the `endpoints` URL in the JSON file or from the IBM Cloud Console.
|
|
8119
8477
|
|
|
8120
8478
|
The required options for this method are:
|
|
8121
8479
|
|
|
8122
|
-
| Option | Description
|
|
8123
|
-
|
|
8124
|
-
| `bucket` | Bucket name
|
|
8125
|
-
| `region` | Bucket region<br/>e.g. `eu-de`
|
|
8480
|
+
| Option | Description |
|
|
8481
|
+
|-----------------------|------------------------------------------------|
|
|
8482
|
+
| `bucket` | Bucket name |
|
|
8483
|
+
| `region` | Bucket region<br/>e.g. `eu-de` |
|
|
8126
8484
|
| `service_credentials` | JSON information saved from IBM Cloud console. |
|
|
8127
8485
|
|
|
8128
|
-
|
|
8486
|
+
Example: Create a Default Configuration
|
|
8129
8487
|
|
|
8130
8488
|
```shell
|
|
8131
|
-
ascli config preset update mycos --bucket=
|
|
8489
|
+
ascli config preset update mycos --bucket=mybucket --service-credentials=@val:@json:@file:~/service_creds.json --region=us-south
|
|
8132
8490
|
ascli config preset set default cos mycos
|
|
8133
8491
|
```
|
|
8134
8492
|
|
|
8135
8493
|
### Operations, transfers
|
|
8136
8494
|
|
|
8137
|
-
|
|
8138
|
-
|
|
8139
|
-
A subset of `node` plugin operations are supported, basically Node API:
|
|
8495
|
+
Once you have created a default configuration using one of the previous methods (otherwise, specify the access options directly on the command line), you can perform a subset of `node` plugin operations, which correspond to the Node API.
|
|
8140
8496
|
|
|
8141
8497
|
```shell
|
|
8142
8498
|
ascli cos node info
|
|
@@ -8144,7 +8500,8 @@ ascli cos node upload 'faux:///sample1G?1g'
|
|
|
8144
8500
|
```
|
|
8145
8501
|
|
|
8146
8502
|
> [!NOTE]
|
|
8147
|
-
>
|
|
8503
|
+
> The file `sample1G` is a dummy file of size 2 GB, generated using the `faux` PVCL scheme (see previous section and `man ascp`).
|
|
8504
|
+
> To upload a real file, simply replace the `faux:///...` URI with the actual file path.
|
|
8148
8505
|
|
|
8149
8506
|
### Tested commands for `cos`
|
|
8150
8507
|
|
|
@@ -8173,6 +8530,10 @@ info
|
|
|
8173
8530
|
|
|
8174
8531
|
## Plugin: `faspio`: Faspio Gateway
|
|
8175
8532
|
|
|
8533
|
+
IBM Aspera faspio Gateway is a high-performance proxy that bridges traditional TCP/UDP applications with the Aspera FASP protocol, enabling secure, ultra-fast transfers over any network, even with high latency or packet loss.
|
|
8534
|
+
It integrates seamlessly into existing workflows and supports use cases such as server-to-server transfers, database replication, and messaging systems.
|
|
8535
|
+
Using `ascli`, you can remotely create and manage bridges on faspio Gateway, simplifying configuration and automation.
|
|
8536
|
+
|
|
8176
8537
|
### Tested commands for `faspio`
|
|
8177
8538
|
|
|
8178
8539
|
> [!NOTE]
|
|
@@ -8180,7 +8541,7 @@ info
|
|
|
8180
8541
|
|
|
8181
8542
|
```bash
|
|
8182
8543
|
bridges create @json:'{"name":"test1","local":{"protocol":"tcp","tls_enabled":false,"port":"3000","bind_address":"127.0.0.1"},"forward":{"protocol":"fasp","tls_enabled":false,"port":"3994","bind_address":"127.0.0.1","host":["10.0.0.1"]}}'
|
|
8183
|
-
bridges delete --bulk=yes @json
|
|
8544
|
+
bridges delete --bulk=yes @json:faspio_bclean_list
|
|
8184
8545
|
bridges list
|
|
8185
8546
|
health
|
|
8186
8547
|
```
|
|
@@ -8196,20 +8557,34 @@ Retrieve information on subscription.
|
|
|
8196
8557
|
|
|
8197
8558
|
```bash
|
|
8198
8559
|
entitlement
|
|
8199
|
-
health
|
|
8560
|
+
health
|
|
8200
8561
|
```
|
|
8201
8562
|
|
|
8202
8563
|
## Plugin: `preview`: Preview generator for AoC
|
|
8203
8564
|
|
|
8204
|
-
The `preview`
|
|
8205
|
-
|
|
8206
|
-
|
|
8565
|
+
The `preview` plugin is responsible for generating thumbnails (Office documents, images, videos) and video previews on storage, primarily for use within the Aspera on Cloud (AoC) application.
|
|
8566
|
+
This plugin leverages the **Node API** of Aspera HSTS and requires:
|
|
8567
|
+
|
|
8568
|
+
- An Access Key
|
|
8569
|
+
- The associated **storage root**
|
|
8570
|
+
|
|
8571
|
+
### Key Features and Options
|
|
8572
|
+
|
|
8573
|
+
You can configure several aspects of the preview generation process:
|
|
8207
8574
|
|
|
8208
|
-
-
|
|
8209
|
-
- Methods for generation of video preview
|
|
8210
|
-
- Parameters for video handling
|
|
8575
|
+
- File Detection Methods
|
|
8211
8576
|
|
|
8212
|
-
|
|
8577
|
+
Define how new files requiring previews are identified.
|
|
8578
|
+
|
|
8579
|
+
- Video Preview Generation Methods
|
|
8580
|
+
|
|
8581
|
+
Choose the approach for creating video previews (e.g., transcoding options).
|
|
8582
|
+
|
|
8583
|
+
- Video Handling Parameters
|
|
8584
|
+
|
|
8585
|
+
Fine-tune video processing, such as resolution, bitrate, and format.
|
|
8586
|
+
|
|
8587
|
+
Using `ascli` is an alternative to <https://github.com/IBM/aspera-on-cloud-file-previews>.
|
|
8213
8588
|
|
|
8214
8589
|
### Aspera Server configuration
|
|
8215
8590
|
|
|
@@ -8534,7 +8909,7 @@ If the preview generator does not have access to files on the file system (it is
|
|
|
8534
8909
|
check --skip-types=office
|
|
8535
8910
|
events --once-only=yes --skip-types=office --log-level=info
|
|
8536
8911
|
scan --scan-id=1 --skip-types=office --log-level=info --file-access=remote --ts=@json:'{"target_rate_kbps":1000000}'
|
|
8537
|
-
scan --skip-types=office --log-level=info
|
|
8912
|
+
scan --skip-types=office --log-level=info --skip-folder=/special/folder
|
|
8538
8913
|
show --base=test /etc/hosts
|
|
8539
8914
|
show --base=test my_docx
|
|
8540
8915
|
show --base=test my_mpg --video-png-conv=animated
|
|
@@ -8561,8 +8936,8 @@ An interface for the `async` utility is provided in the following plugins:
|
|
|
8561
8936
|
The `sync` command, available in above plugins, performs the following actions:
|
|
8562
8937
|
|
|
8563
8938
|
- Start a local Sync session by executing the `async` command with the appropriate parameters.
|
|
8564
|
-
- Get local Sync session information using the `asyncadmin` command, if available.
|
|
8565
8939
|
- Get local Sync session information accessing directly the Async snap database.
|
|
8940
|
+
- Get local Sync session information using the `asyncadmin` command, if available.
|
|
8566
8941
|
|
|
8567
8942
|
One advantage of using `ascli` over the `async` command line is the possibility to use a configuration file, using standard options of `ascli`.
|
|
8568
8943
|
Moreover, `ascli` supports sync with application requiring token-based authorization.
|
|
@@ -8575,9 +8950,15 @@ Some `sync` parameters are filled by the related plugin using transfer spec para
|
|
|
8575
8950
|
|
|
8576
8951
|
### Starting a sync session
|
|
8577
8952
|
|
|
8578
|
-
To start a sync session, use one of the three sync directions followed by a folder path (remote path for `pull`, local path
|
|
8953
|
+
To start a sync session, use one of the three sync directions followed by a folder path (remote path for `pull`, local path otherwise).
|
|
8579
8954
|
The path on the other side is specified using option: `to_folder`.
|
|
8580
8955
|
|
|
8956
|
+
The general syntax is:
|
|
8957
|
+
|
|
8958
|
+
```shell
|
|
8959
|
+
ascli ... sync <direction> <path> [<sync_info>] [--to-folder=<path>]
|
|
8960
|
+
```
|
|
8961
|
+
|
|
8581
8962
|
| Direction<br/>(parameter) | Path<br/>(parameter) | `to_folder`<br/>(option) |
|
|
8582
8963
|
|-----------|--------|-------------|
|
|
8583
8964
|
| `push` | Local | Remote |
|
|
@@ -8588,6 +8969,11 @@ An optional positional `Hash` argument (`sync_info`) can be provided in either `
|
|
|
8588
8969
|
|
|
8589
8970
|
A single session can be specified using either formats.
|
|
8590
8971
|
|
|
8972
|
+
If argument `<sync_info>` is not provided, then a default configuration is generated in the `conf` format as specified in the next sectin.
|
|
8973
|
+
|
|
8974
|
+
If argument `<sync_info>` is provided, it defines the format to use.
|
|
8975
|
+
If parameter `sessions` or `instance` is present, then `args` is used, else `conf` is used.
|
|
8976
|
+
|
|
8591
8977
|
#### `sync_info`: `conf` format
|
|
8592
8978
|
|
|
8593
8979
|
This is the **preferred** syntax.
|
|
@@ -8595,7 +8981,155 @@ It is the same payload as specified on the `async` option `--conf` or in Node AP
|
|
|
8595
8981
|
|
|
8596
8982
|
Documentation on Async Node API can be found on [IBM Developer Portal](https://developer.ibm.com/apis/catalog?search=%22aspera%20sync%20api%22).
|
|
8597
8983
|
|
|
8598
|
-
|
|
8984
|
+
The following parameters are automatically filled from mandatory arguments, and are not allowed:
|
|
8985
|
+
|
|
8986
|
+
- `direction`
|
|
8987
|
+
- `local.path`
|
|
8988
|
+
- `remote.path`
|
|
8989
|
+
|
|
8990
|
+
Parameter `name` is set to a default value if not provided in `sync_info`.
|
|
8991
|
+
Parameter `quiet` is set to `false` if not provided in `sync_info` and a terminal is detected.
|
|
8992
|
+
|
|
8993
|
+
The documentation is available in the terminal with:
|
|
8994
|
+
|
|
8995
|
+
```shell
|
|
8996
|
+
ascli config sync spec
|
|
8997
|
+
```
|
|
8998
|
+
|
|
8999
|
+
| Field | Type | Description |
|
|
9000
|
+
|------------------------------------------|---------|----------------------------------------------------------------------------------|
|
|
9001
|
+
| ascp_dir | string | Directory containing ascp executable to use. |
|
|
9002
|
+
| assume_no_mods | boolean | Assume that the directory structure has not been modified.<br/>(`--assume-no-mods`) |
|
|
9003
|
+
| checksum | string | Use the specified checksum type. Default is none on cloud storage.<br/>Allowed values: `sha1`, `md5`, `sha1_sparse`, `md5_sparse`, `none`<br/>(`--checksum={enum}`)(-k) |
|
|
9004
|
+
| clean_excluded | boolean | Removes any existing entries in the snapshot database for excluded paths<br/>(`--clean-excluded`) |
|
|
9005
|
+
| cookie | string | User-defined identification string.<br/>(`--cookie={string}`) |
|
|
9006
|
+
| cooloff_max_seconds | integer | Wait up to the specified time for a file to stop changing before skipping synchronization of the file. 0 for disabled<br/>(`--cooloff-max={integer}`) |
|
|
9007
|
+
| cooloff_seconds | integer | Delay the start of the transfer to confirm that the content is not changing. Value must be between 0 and 60<br/>(`--cooloff={integer}`) |
|
|
9008
|
+
| create_dir | boolean | Create the source directory, target directory, or both, if they do not exist.<br/>(`--create-dir`) |
|
|
9009
|
+
| db_cache_size | integer | Specify DB cache size. |
|
|
9010
|
+
| db_journal_off | boolean | Turn off DB journal. |
|
|
9011
|
+
| db_sync_on | boolean | Enable synchronous write in DB. |
|
|
9012
|
+
| dedup | string | Take the specified action when async detects duplicate files on the source.<br/>Allowed values: `copy`, `inode`, `hardlink`, `none`<br/>(`--dedup={enum}`) |
|
|
9013
|
+
| delete_before | boolean | Schedule deletes before transfers.<br/>(`--delete-before`) |
|
|
9014
|
+
| delete_delay | boolean | Delay actual deletes until the end of the synchronization.<br/>(`--delete-delay`) |
|
|
9015
|
+
| direction | string | The direction of replication relative to the local.<br/>Allowed values: `bidi`, `pull`, `push`<br/>(`--direction={enum}`)(-K) |
|
|
9016
|
+
| exclude_dirs_older_than | object | Don't scan directories with a recursive modified time older than absolute or async start time - relative_seconds |
|
|
9017
|
+
| exclude_dirs_older_than.absolute | string | UTC timestamp. Empty value for disabled. |
|
|
9018
|
+
| exclude_dirs_older_than.relative_seconds | integer | Relative to async start time. `-1` for disabled. |
|
|
9019
|
+
| filters | array | The filters allow to further specify which files have to be excluded and included from the transfer list. Each filter is defined by a rule and a value. Order of filters matters |
|
|
9020
|
+
| filters[].rule | string | The rule for the filter.<br/>Allowed values: `include`, `exclude`, `include_from`, `exclude_from` |
|
|
9021
|
+
| filters[].value | string | On include or exclude, the filter's pattern. On include_from or exclude_from, the path containing filter specifications |
|
|
9022
|
+
| ignore_delete | boolean | Do not copy removals to the peer.<br/>(`--ignore-delete`) |
|
|
9023
|
+
| ignore_mode | boolean | Source files that have had their mode changed after the initial. transfer will not update the destination file mode.<br/>(`--ignore-mode`) |
|
|
9024
|
+
| ignore_remote_host_sync_name | boolean | Do not check that the remote host being used for the current. transfer matches the host used when the local database was created |
|
|
9025
|
+
| local | object | |
|
|
9026
|
+
| local.pass | string | Authenticate the local async with the specified password. |
|
|
9027
|
+
| local.path | string | The directory to be synchronized on the local host.<br/>(`--local-dir={string}`)(-d) |
|
|
9028
|
+
| local_apply_docroot | boolean | Prepend the docroot to the directory on the local host.<br/>(`--apply-local-docroot`) |
|
|
9029
|
+
| local_checksum_threads | integer | Maximum number of threads to do checksum on the local host. Value must be between 1 and 99.<br/>(`--local-checksum-threads={integer}`) |
|
|
9030
|
+
| local_db_dir | string | Use the specified database directory on the local host. Default is `.private-asp` at the root level of the synchronized directory.<br/>(`--local-db-dir={string}`)(-b) |
|
|
9031
|
+
| local_db_store_dir | string | Store/Restore the database to/from the specified directory on the local host. The value can be an absolute path, an URI or - (use the local sync dir)<br/>(`--local-db-store-dir={string}`) |
|
|
9032
|
+
| local_force_stat | boolean | Forces the local async to retrieve file information even when no changes are detected by the scanner or monitor.<br/>(`--local-force-stat`) |
|
|
9033
|
+
| local_fs_threads | integer | Maximum number of threads to do file system operations on the local host. Value must be between 1 and 99.<br/>(`--local-fs-threads={integer}`) |
|
|
9034
|
+
| local_keep_dir | string | Move deleted files into the specified directory on the local host.<br/>(`--keep-dir-local={string}`) |
|
|
9035
|
+
| local_mount_signature | string | Verify that the file system is mounted by the existence of this file on the local host.<br/>(`--local-mount-signature={string}`) |
|
|
9036
|
+
| local_move_cache_timeout_seconds | integer | Delay in seconds before aborting moving a file from local cache to final destination. `-1` for disabled.<br/>(`--local-move-cache-timeout={integer}`) |
|
|
9037
|
+
| local_preserve_acls | string | Preserve access control lists on the local host.<br/>Allowed values: `native`, `metafile`, `none`<br/>(`--preserve-acls={enum}`) |
|
|
9038
|
+
| local_preserve_xattrs | string | Preserve extended attributes on the local.<br/>Allowed values: `native`, `metafile`, `none`<br/>(`--preserve-xattrs={enum}`) |
|
|
9039
|
+
| local_scan_interval_milliseconds | integer | Enable periodic scans on the local host during a continuous sync. `-1` for disabled<br/>(`--scan-interval={integer}`) |
|
|
9040
|
+
| local_scan_threads | integer | Number of directory scanning threads on the local host. Value must be between 1 and 99<br/>(`--scan-threads={integer}`) |
|
|
9041
|
+
| local_stat_cache_size | integer | Set stat cache size on the local host. 0 for disabled. |
|
|
9042
|
+
| log | object | |
|
|
9043
|
+
| log.level | string | Use the specified log level.<br/>Allowed values: `log`, `dbg1`, `dbg2`<br/>(special:`-D`) |
|
|
9044
|
+
| log.local_dir | string | Use the specified logging directory on the local host.<br/>(`--alt-logdir={string}`)(-L) |
|
|
9045
|
+
| log.remote_dir | string | Use the specified logging directory on the remote host.<br/>(`--remote-logdir={string}`)(-R) |
|
|
9046
|
+
| manifest_path | string | A directory path where ascp will create manifest TEXT files (passed to ascp as --file-manifest-path) |
|
|
9047
|
+
| mirror | boolean | Force the pulling side to be exactly like the pushing side, removing files on the destination that don't exist on the source and resending source files that don't have an exact match on the destination. Cannot be used in bi-directional mode.<br/>(`--mirror`) |
|
|
9048
|
+
| mode | string | Specify whether async runs continuously or not. In `one_time` mode, async stops after the first full synchronization. `continuous` supported only if the source is Windows or Linux.<br/>Allowed values: `one_time`, `continuous`<br/>(special:`--continuous`)(-C) |
|
|
9049
|
+
| monitor_buffer_size | integer | Bytes to allocate for the change monitor buffer. Applies to any Windows machine on either side. `-1` to use the computed value. |
|
|
9050
|
+
| name | string | Name of the synchronization pair.<br/>(`--name={string}`)(-N) |
|
|
9051
|
+
| no_log | string | Suppress log messages for ITEM. The only currently supported ITEM is 'stats', which suppresses both STATS and PROG log messages.<br/>(`--no-log={string}`) |
|
|
9052
|
+
| no_preserve_root_attrs | boolean | Disable the preservation of attributes on the Sync root.<br/>(`--no-preserve-root-attrs`) |
|
|
9053
|
+
| no_scan | boolean | Skip initial scanning.<br/>(`--no-scan`) |
|
|
9054
|
+
| notifications_sharing_retry_max | integer | Retry processing filesystem notifications up to the specified maximum number after a sharing violation. |
|
|
9055
|
+
| overwrite | string | Overwrite files according to the specified policy. Default is determined by the direction: `conflict` for `bidi`, otherwise `always`.<br/>Allowed values: `always`, `older`, `conflict`<br/>(`--overwrite={enum}`)(-o) |
|
|
9056
|
+
| pending_max | integer | Allow the maximum number of files that are pending transfer to be no more than the specified number.<br/>(`--pending-max={integer}`) |
|
|
9057
|
+
| preserve_access_time | boolean | Preserve file access time from the source to the destination.<br/>(`--preserve-access-time`) |
|
|
9058
|
+
| preserve_creation_time | boolean | Preserve file creation time from the source to the destination.<br/>(`--preserve-creation-time`) |
|
|
9059
|
+
| preserve_gid | boolean | Preserve the file owner's GID.<br/>(`--preserve-gid`)(-j) |
|
|
9060
|
+
| preserve_modification_time | boolean | Preserve file modification time from the source to the destination.<br/>(`--preserve-modification-time`) |
|
|
9061
|
+
| preserve_object_lock_legal_hold | boolean | Preserve object lock legal hold status from the source to the destination.<br/>(`--preserve-object-lock-legal-hold`) |
|
|
9062
|
+
| preserve_object_lock_retention | boolean | Preserve object lock retention from the source to the destination.<br/>(`--preserve-object-lock-retention`) |
|
|
9063
|
+
| preserve_object_metadata | boolean | Preserve object metadata from the source to the destination.<br/>(`--preserve-object-metadata`) |
|
|
9064
|
+
| preserve_uid | boolean | Preserve the file owner's UID.<br/>(`--preserve-uid`)(-u) |
|
|
9065
|
+
| quiet | boolean | Disable progress display.<br/>(`--quiet`)(-q) |
|
|
9066
|
+
| remote | object | |
|
|
9067
|
+
| remote.connect_mode | string | Define how to connect to the remote.<br/>Allowed values: `ssh`, `ws`<br/>(special:`--ws-connect`) |
|
|
9068
|
+
| remote.fingerprint | string | Check it against server SSH host key fingerprint. |
|
|
9069
|
+
| remote.host | string | Use the specified host name or address of the remote host.<br/>(`--host={string}`) |
|
|
9070
|
+
| remote.pass | string | Authenticate the transfer with the specified password.<br/>(`--pass={string}`)(-w) |
|
|
9071
|
+
| remote.path | string | Synchronize the specified directory on the remote host.<br/>(`--remote-dir={string}`)(-r) |
|
|
9072
|
+
| remote.port | integer | Use the specified TCP port for SSH. Used when connect_mode is `ssh`<br/>(`--tcp-port={integer}`)(-P) |
|
|
9073
|
+
| remote.private_key_paths | array | Authenticate with the specified SSH private key file.<br/>(`--private-key-path={array}`)(-i) |
|
|
9074
|
+
| remote.proxy | object | Specify the address of the Aspera high-speed proxy server.<br/>(special:`--proxy={object}`) |
|
|
9075
|
+
| remote.proxy.host | string | Use the specified host name or address of the proxy. |
|
|
9076
|
+
| remote.proxy.pass | string | Authenticate to the proxy with the specified password. |
|
|
9077
|
+
| remote.proxy.port | integer | Use the specified port, default is 9091 for dnat, 9092. for dnats |
|
|
9078
|
+
| remote.proxy.protocol | string | The protocol to be used.<br/>Allowed values: `none`, `dnat`, `dnats` |
|
|
9079
|
+
| remote.proxy.user | string | Authenticate to the proxy with the specified username. |
|
|
9080
|
+
| remote.token | string | Token string passed to server's authentication service. |
|
|
9081
|
+
| remote.token_node_user | string | Node API user identity associated with the token. Required for node user bearer tokens |
|
|
9082
|
+
| remote.user | string | Authenticate the transfer with the specified username.<br/>(`--user={string}`) |
|
|
9083
|
+
| remote.ws_port | integer | Use the specified port for Websocket. Used when connect_mode is `ws`. |
|
|
9084
|
+
| remote_checksum_threads | integer | Maximum number of threads to do checksum on the remote host. Value must be between 1 and 99<br/>(`--remote-checksum-threads={integer}`) |
|
|
9085
|
+
| remote_db_dir | string | Use the specified database directory on the remote host. Default is `.private-asp` at the root level of the synchronized directory.<br/>(`--remote-db-dir={string}`)(-B) |
|
|
9086
|
+
| remote_db_store_dir | string | Store/Restore the database to/from the specified directory on the remote host. The value can be an absolute path, an URI or - (use the remote sync dir).<br/>(`--remote-db-store-dir={string}`) |
|
|
9087
|
+
| remote_force_stat | boolean | Forces the remote async to retrieve file information even when no changes are detected by the scanner or monitor.<br/>(`--remote-force-stat`) |
|
|
9088
|
+
| remote_fs_threads | integer | Maximum number of threads to do file system operations on the remote host. Value must be between 1 and 99.<br/>(`--remote-fs-threads={integer}`) |
|
|
9089
|
+
| remote_keep_dir | string | Move deleted files into the specified directory on the remote host.<br/>(`--keep-dir-remote={string}`) |
|
|
9090
|
+
| remote_mount_signature | string | Verify that the file system is mounted by the existence of this file on the remote host.<br/>(`--remote-mount-signature={string}`) |
|
|
9091
|
+
| remote_move_cache_timeout_seconds | integer | Delay in seconds before aborting moving a file from remote cache to final destination. `-1` for disabled.<br/>(`--remote-move-cache-timeout={integer}`) |
|
|
9092
|
+
| remote_preserve_acls | string | Preserve access control lists on the remote host. If not specified, the default behavior is to use the same storage mode as specified by `preserve_acls`.<br/>Allowed values: `native`, `metafile`, `none`<br/>(`--remote-preserve-acls={enum}`) |
|
|
9093
|
+
| remote_preserve_xattrs | string | Preserve extended attributes on the remote host. If not specified, the default behavior is to use the same storage mode as specified by `preserve_xattrs`.<br/>Allowed values: `native`, `metafile`, `none`<br/>(`--remote-preserve-xattrs={enum}`) |
|
|
9094
|
+
| remote_scan_interval_milliseconds | integer | Enable periodic scans on the remote host. `-1` for disabled.<br/>(special:`--remote-scan-interval={integer}`) |
|
|
9095
|
+
| remote_scan_threads | integer | Number of directory scanning threads on the remote host. Value must be between 1 and 99.<br/>(`--remote-scan-threads={integer}`) |
|
|
9096
|
+
| remote_stat_cache_size | integer | Set stat cache size on the remote host. 0 for disabled. |
|
|
9097
|
+
| remove_after_transfer | boolean | Remove source files after they are successfully synchronized.<br/>(`--remove-after-transfer`) |
|
|
9098
|
+
| reset | boolean | Clear the snapshot database and rescan the synchronized directories and files to create a fresh snapshot<br/>(`--reset`)(-x) |
|
|
9099
|
+
| resume | object | Partial transfers may exist if communication disruptions caused the underlying ascp processes to terminate early. Note that transfer resumption can only happen if the `reset` option is disabled. If an async session starts with `reset` enabled and resume enabled, transfers interrupted during that session will be resumeable, but only if async is then restarted with 'reset' disabled. |
|
|
9100
|
+
| resume.enabled | boolean | Enable the possibility of resuming individual file transfers between async sessions. |
|
|
9101
|
+
| resume.max_age | integer | Sets the age limit in days for temporary files that will be preserved on cleanup (usually at async's start and stop) for potential transfer resume. Temp files older than the given value will be removed regardless of whether they might be resumeable.<br/>(`--resume-age-days={integer}`) |
|
|
9102
|
+
| resume.min_size | integer | This field specifies the minimum size of files that will be allowed to resume.<br/>(`--support-resume={integer}`) |
|
|
9103
|
+
| resume_scan | boolean | Resume the scan from where the previous execution left off.<br/>(`--resume-scan`) |
|
|
9104
|
+
| scan_dir_rename | boolean | Enable the detection of renamed directories and files compared. to the previous scan, based on matching inodes<br/>(`--scan-dir-rename`) |
|
|
9105
|
+
| scan_file_rename | boolean | Enable the detection of renamed files compared to the previous scan, based on matching inodes.<br/>(`--scan-file-rename`) |
|
|
9106
|
+
| scan_intensity | string | Scan at the set intensity. `vlow` minimizes system activity. `vhigh` maximizes system activity by continuously scanning files without rest.<br/>Allowed values: `vlow`, `low`, `medium`, `high`, `vhigh`<br/>(`--scan-intensity={enum}`)(-H) |
|
|
9107
|
+
| sharing_retry_max | integer | Retry synchronizations up to the specified maximum number after a sharing violation.<br/>(`--sharing-retry-max={integer}`) |
|
|
9108
|
+
| store_metadata_records | boolean | Store the acls or xattrs in the snapshot database.<br/>(`--store-metadata-records`) |
|
|
9109
|
+
| symbolic_links | string | Handle symbolic links with the specified method. Default is `skip` on windows, `copy` otherwise.<br/>Allowed values: `copy`, `skip`, `follow`<br/>(`--symbolic-links={enum}`)(-n) |
|
|
9110
|
+
| tags | object | User-defined metadata tags.<br/>(special:`--tags64={object}`) |
|
|
9111
|
+
| transfer_threads | array | Use the specified number of dedicated transfer threads to process files smaller or equal to the specified size<br/>(special:`--transfer-threads={array}`) |
|
|
9112
|
+
| transfer_threads[].size | integer | Upper limit. `-1` for infinity. |
|
|
9113
|
+
| transfer_threads[].threads | integer | The number of threads. |
|
|
9114
|
+
| transport | object | |
|
|
9115
|
+
| transport.cipher | string | Specify encryption algorithm for file data.<br/>Allowed values: `none`, `aes128`, `aes192`, `aes256`, `aes128cfb`, `aes192cfb`, `aes256cfb`, `aes128gcm`, `aes192gcm`, `aes256gcm`<br/>(`--cipher={enum}`)(-c) |
|
|
9116
|
+
| transport.compression | string | Compress a file before transfer using the specified MODE.<br/>Allowed values: `none`, `zlib`<br/>(`--compression={enum}`) |
|
|
9117
|
+
| transport.datagram_size | integer | Specify the datagram size (MTU) for FASP. By default it uses the detected path MTU.<br/>(`--datagram-size={integer}`)(-Z) |
|
|
9118
|
+
| transport.min_rate | integer | Attempt to transfer no slower than the specified rate (in bps).<br/>(`--min-rate={integer}`)(-m) |
|
|
9119
|
+
| transport.rate_policy | string | Defines how `ascp` will manage the bandwidth.<br/>Allowed values: `fair`, `fixed`, `high`, `low`<br/>(`--rate-policy={enum}`)(-a) |
|
|
9120
|
+
| transport.raw_options | array | Pass arbitrary arguments to `ascp`.<br/>(special:`--raw-options={array}`) |
|
|
9121
|
+
| transport.read_block_size | integer | Use the specified block size (in bytes) for reading. Default is determined by `aspera.conf`.<br/>(`--read-block-size={integer}`)(-g) |
|
|
9122
|
+
| transport.rexmsg_size | integer | Use the specified size (in bytes) for a retransmission request. Default is determined by `aspera.conf`.<br/>(`--rexmsg-size={integer}`)(-X) |
|
|
9123
|
+
| transport.target_rate | integer | Transfer no faster than the specified rate (in bps).<br/>(`--target-rate={integer}`)(-l) |
|
|
9124
|
+
| transport.udp_port | integer | Use the specified UDP port for FASP data transfer.<br/>(`--udp-port={integer}`)(-O) |
|
|
9125
|
+
| transport.write_block_size | integer | Use the specified block size (in bytes) for writing. Default is determined by `aspera.conf`.<br/>(`--write-block-size={integer}`)(-G) |
|
|
9126
|
+
| watchd | object | When connection is configured, `asperawatchd` is used to detect the changes on the source directory.<br/>(special:`--watchd={object}`) |
|
|
9127
|
+
| watchd.datastore | string | Specify the type of datastore, `none` for disabled.<br/>Allowed values: `none`, `redis`, `scalekv` |
|
|
9128
|
+
| watchd.domain | string | Specify the domain. Default is the current username. |
|
|
9129
|
+
| watchd.host | string | Use the specified host name or address to connect to the datastore. |
|
|
9130
|
+
| watchd.port | integer | Use the specified port. |
|
|
9131
|
+
| write_gid | string | Try to write files as the specified group.<br/>(`--write-gid={string}`) |
|
|
9132
|
+
| write_uid | string | Try to write files as the specified user.<br/>(`--write-uid={string}`) |
|
|
8599
9133
|
|
|
8600
9134
|
#### `sync_info`: `args` format
|
|
8601
9135
|
|
|
@@ -8606,19 +9140,39 @@ Technically, it allows definition of multiple sync sessions in a single command,
|
|
|
8606
9140
|
|
|
8607
9141
|
This is the mode selection if there are either keys `sessions` or `instance` in option `sync_info`.
|
|
8608
9142
|
|
|
8609
|
-
|
|
9143
|
+
The following parameters are automatically filled from mandatory arguments, and are not allowed:
|
|
8610
9144
|
|
|
8611
|
-
|
|
9145
|
+
- `direction`
|
|
9146
|
+
- `local_dir`
|
|
9147
|
+
- `remote_dir`
|
|
8612
9148
|
|
|
8613
|
-
|
|
9149
|
+
Parameter `name` is set to a default value if not provided in `sync_info`.
|
|
8614
9150
|
|
|
8615
|
-
|
|
8616
|
-
- Other commands access directly the Async snap database (`snap.db`).
|
|
9151
|
+
### Sync management and monitoring: `admin`
|
|
8617
9152
|
|
|
8618
|
-
|
|
8619
|
-
|
|
8620
|
-
|
|
8621
|
-
|
|
9153
|
+
The `admin` command provides several sub commands that access directly the Async snap database (`snap.db`).
|
|
9154
|
+
(With the exception of `status` which uses the utility `asyncadmin`, available only on server products.)
|
|
9155
|
+
|
|
9156
|
+
This command does not require any communication to the server and accesses only the local database.
|
|
9157
|
+
It can be executed also from the `config` plugin:
|
|
9158
|
+
|
|
9159
|
+
```shell
|
|
9160
|
+
ascli config sync admin
|
|
9161
|
+
```
|
|
9162
|
+
|
|
9163
|
+
To use the `admin` command, the gem `sqlite3` shall be installed:
|
|
9164
|
+
|
|
9165
|
+
```shell
|
|
9166
|
+
gem install sqlite3
|
|
9167
|
+
```
|
|
9168
|
+
|
|
9169
|
+
In order to use the `admin` commands, the user must provide the path to the database folder:
|
|
9170
|
+
|
|
9171
|
+
- i.e. a folder containing a subfolder named `.private-asp`.
|
|
9172
|
+
- By default it is the local synchronized folder.
|
|
9173
|
+
- If an alternate folder is specified for the database, then specify it.
|
|
9174
|
+
- If this folder contains only one session information (i.e. a folder containing the `snap.db` file), it will be used by default.
|
|
9175
|
+
- Else, the user must specify a session name in the optional `Hash`, in the `name` key.
|
|
8622
9176
|
|
|
8623
9177
|
## Hot folder
|
|
8624
9178
|
|
|
@@ -8757,17 +9311,17 @@ This is done with option `smtp`.
|
|
|
8757
9311
|
The `smtp` option is a `Hash` (extended value) with the following fields:
|
|
8758
9312
|
|
|
8759
9313
|
<!-- markdownlint-disable MD034 -->
|
|
8760
|
-
| Field | Default
|
|
8761
|
-
|
|
8762
|
-
| `server` | -
|
|
8763
|
-
| `tls` | `true`
|
|
8764
|
-
| `ssl` | `false`
|
|
8765
|
-
| `port` | `587
|
|
8766
|
-
| `domain` | _domain
|
|
8767
|
-
| `username` | -
|
|
8768
|
-
| `password` | -
|
|
8769
|
-
| `from_email` | username if defined
|
|
8770
|
-
| `from_name` | same as email
|
|
9314
|
+
| Field | Default | Example | Description |
|
|
9315
|
+
|--------------|--------------------|------------------|----------------------------------|
|
|
9316
|
+
| `server` | - | `smtp.gmail.com` | SMTP server address |
|
|
9317
|
+
| `tls` | `true` | `true` | Enable `STARTTLS` (port 587) |
|
|
9318
|
+
| `ssl` | `false` | `false` | Enable `TLS` (port 465) |
|
|
9319
|
+
| `port` | `587`<br/>`465`<br/>`25` | `587` | Port for service |
|
|
9320
|
+
| `domain` | _domain of_ `server` | gmail.com | Email domain of user |
|
|
9321
|
+
| `username` | - | john@example.com | User to authenticate on SMTP server<br/>Leave empty for open auth. |
|
|
9322
|
+
| `password` | - | my_password_here | Password for above username |
|
|
9323
|
+
| `from_email` | username if defined|johnny@example.com| Address used if receiver replies |
|
|
9324
|
+
| `from_name` | same as email | John Wayne | Display name of sender |
|
|
8771
9325
|
<!-- markdownlint-enable MD034 -->
|
|
8772
9326
|
|
|
8773
9327
|
### Example of configuration
|
|
@@ -8873,22 +9427,23 @@ During execution, it generates all low level events, one per line, in JSON forma
|
|
|
8873
9427
|
|
|
8874
9428
|
Top level parameters supported by `asession`:
|
|
8875
9429
|
|
|
8876
|
-
| Parameter
|
|
8877
|
-
|
|
8878
|
-
| `spec`
|
|
8879
|
-
| `agent`
|
|
8880
|
-
| `loglevel`
|
|
8881
|
-
| `file_list_folder` | The folder used to store (for garbage collection) generated file lists.<br/>
|
|
9430
|
+
| Parameter | Description |
|
|
9431
|
+
|--------------------|------------------------------------------------------------------------|
|
|
9432
|
+
| `spec` | The [**transfer-spec**](#transfer-specification) |
|
|
9433
|
+
| `agent` | Same parameters as transfer-info for agent `direct` |
|
|
9434
|
+
| `loglevel` | Log level of `asession` |
|
|
9435
|
+
| `file_list_folder` | The folder used to store (for garbage collection) generated file lists.<br/>Default: `[system tmp folder]/[username]_asession_filelists` |
|
|
8882
9436
|
|
|
8883
9437
|
### Comparison of interfaces
|
|
8884
9438
|
|
|
8885
|
-
|
|
|
8886
|
-
|
|
8887
|
-
|
|
|
8888
|
-
|
|
|
8889
|
-
|
|
|
8890
|
-
|
|
|
8891
|
-
|
|
|
9439
|
+
| Feature/Tool | Transfer Daemon | FASPManager | `ascp` | `asession` |
|
|
9440
|
+
|------------|-------------|-------------|-------------|-------------|
|
|
9441
|
+
| status | Supported | Deprecated | Supported | Deprecated |
|
|
9442
|
+
| language integration | Many | C/C++<br/>C#/.net<br/>Go<br/>Python<br/>java<br/> | Any | Any |
|
|
9443
|
+
| required additional components to `ascp` | Daemon | Library<br/>(+headers) | - | Ruby<br/>Aspera gem |
|
|
9444
|
+
| startup | Daemon | API | Command line arguments | JSON on stdin<br/>(standard APIs:<br/>JSON.generate<br/>Process.spawn) |
|
|
9445
|
+
| events | Poll | Callback | Possibility to open management port<br/>and proprietary text syntax | JSON on stdout |
|
|
9446
|
+
| platforms | Like `ascp` and `transferd` | Like `ascp` and lib (if compiled) | Any with `ascp` | Any with Ruby and `ascp` |
|
|
8892
9447
|
|
|
8893
9448
|
### Simple session
|
|
8894
9449
|
|
|
@@ -9024,24 +9579,30 @@ This also requires Ruby header files.
|
|
|
9024
9579
|
If Ruby was installed as a Linux Packages, then also install Ruby development package:
|
|
9025
9580
|
`ruby-dev` or `ruby-devel`, depending on distribution.
|
|
9026
9581
|
|
|
9027
|
-
###
|
|
9582
|
+
### Private key type: `ed25519` not supported by default
|
|
9028
9583
|
|
|
9029
|
-
|
|
9030
|
-
This type of key will just be ignored.
|
|
9584
|
+
There are a few aspects concerning ED25519 keys.
|
|
9031
9585
|
|
|
9032
|
-
|
|
9586
|
+
By default, the `aspera-cli` gem does not depend on the `ed25519` gem because it requires compilation of native code which can cause problems and prevent the installation of `ascli`, especially when using JRuby.
|
|
9587
|
+
Refer to [this](https://github.com/net-ssh/net-ssh/issues/565).
|
|
9588
|
+
If you want to use `ed25519` keys, then install the required gems:
|
|
9033
9589
|
|
|
9034
|
-
|
|
9590
|
+
```shell
|
|
9591
|
+
gem install ed25519 bcrypt_pbkdf
|
|
9592
|
+
```
|
|
9593
|
+
|
|
9594
|
+
In addition, if those two gems are not installed, and if you are using Private Keys encoded using the OpenSSH format, then you'll get the message:
|
|
9035
9595
|
|
|
9036
9596
|
```text
|
|
9037
|
-
OpenSSH keys only supported if ED25519 is available
|
|
9597
|
+
OpenSSH keys only supported if ED25519 is available (NotImplementedError)
|
|
9598
|
+
net-ssh requires the following gems for ed25519 support:
|
|
9599
|
+
* ed25519 (>= 1.2, < 2.0)
|
|
9600
|
+
* bcrypt_pbkdf (>= 1.0, < 2.0)
|
|
9601
|
+
See https://github.com/net-ssh/net-ssh/issues/565 for more information
|
|
9038
9602
|
```
|
|
9039
9603
|
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
In addition, host keys of type: `ecdsa-sha2` and `ecdh-sha2` are also deactivated by default.
|
|
9044
|
-
To re-activate, set env var `ASCLI_ENABLE_ECDSHA2` to `true`.
|
|
9604
|
+
In addition, if **JRuby** is used, host keys of type: `ecdsa-sha2` and `ecdh-sha2` are also deactivated by default.
|
|
9605
|
+
To activate, set env var `ASCLI_ENABLE_ECDSHA2` to `true`.
|
|
9045
9606
|
|
|
9046
9607
|
### JRuby: `net-ssh`: Unsupported algorithm
|
|
9047
9608
|
|
|
@@ -9068,11 +9629,11 @@ To deactivate this error, enable option `IGNORE_UNEXPECTED_EOF` for `ssl_options
|
|
|
9068
9629
|
--http-options=@json:'{"ssl_options":["IGNORE_UNEXPECTED_EOF"]}'
|
|
9069
9630
|
```
|
|
9070
9631
|
|
|
9071
|
-
### Error: `ascp`:
|
|
9632
|
+
### Error: `ascp`: `/lib64/libc.so.6`: version `GLIBC_2.28` not found
|
|
9072
9633
|
|
|
9073
9634
|
This happens on Linux x86 if you try to install `transferd` on a Linux version too old to support a newer `ascp` executable.
|
|
9074
9635
|
|
|
9075
|
-
Workaround: Install an older version
|
|
9636
|
+
Workaround: Install an older version of `transferd`:
|
|
9076
9637
|
|
|
9077
9638
|
```shell
|
|
9078
9639
|
ascli config transferd install 1.1.2
|