aspera-cli 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +455 -229
- data/docs/Makefile +4 -4
- data/docs/README.erb.md +457 -126
- data/docs/test_env.conf +19 -2
- data/examples/aoc.rb +14 -3
- data/examples/faspex4.rb +89 -0
- data/lib/aspera/aoc.rb +38 -40
- data/lib/aspera/cli/main.rb +65 -33
- data/lib/aspera/cli/plugins/aoc.rb +54 -65
- data/lib/aspera/cli/plugins/ats.rb +2 -2
- data/lib/aspera/cli/plugins/config.rb +158 -137
- data/lib/aspera/cli/plugins/faspex.rb +111 -64
- data/lib/aspera/cli/plugins/faspex5.rb +35 -48
- data/lib/aspera/cli/plugins/node.rb +3 -2
- data/lib/aspera/cli/plugins/preview.rb +88 -55
- data/lib/aspera/cli/transfer_agent.rb +98 -62
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/command_line_builder.rb +48 -31
- data/lib/aspera/cos_node.rb +34 -28
- data/lib/aspera/environment.rb +2 -2
- data/lib/aspera/fasp/aoc.rb +1 -1
- data/lib/aspera/fasp/installation.rb +68 -45
- data/lib/aspera/fasp/local.rb +89 -45
- data/lib/aspera/fasp/manager.rb +3 -0
- data/lib/aspera/fasp/node.rb +23 -1
- data/lib/aspera/fasp/parameters.rb +57 -86
- data/lib/aspera/fasp/parameters.yaml +531 -0
- data/lib/aspera/fasp/resume_policy.rb +13 -12
- data/lib/aspera/fasp/uri.rb +1 -1
- data/lib/aspera/id_generator.rb +22 -0
- data/lib/aspera/node.rb +14 -3
- data/lib/aspera/oauth.rb +135 -129
- data/lib/aspera/persistency_action_once.rb +11 -7
- data/lib/aspera/persistency_folder.rb +6 -26
- data/lib/aspera/rest.rb +3 -12
- data/lib/aspera/secrets.rb +20 -0
- data/lib/aspera/sync.rb +40 -35
- data/lib/aspera/timer_limiter.rb +22 -0
- data/lib/aspera/web_auth.rb +105 -0
- metadata +22 -3
- data/docs/transfer_spec.html +0 -99
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[comment1]: # (Do not edit this README.md, edit docs/README.erb.md, for details, read docs/README.md)
|
|
2
|
-
|
|
2
|
+
<font size="+12"><center>`ascli` : Command Line Interface for IBM Aspera products</center></font>
|
|
3
3
|
|
|
4
|
-
Version : 4.
|
|
4
|
+
Version : 4.3.0
|
|
5
5
|
|
|
6
6
|
_Laurent/2016-2021_
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@ Ruby Gem: [https://rubygems.org/gems/aspera-cli](https://rubygems.org/gems/asper
|
|
|
13
13
|
|
|
14
14
|
Ruby Doc: [https://www.rubydoc.info/gems/aspera-cli](https://www.rubydoc.info/gems/aspera-cli)
|
|
15
15
|
|
|
16
|
-
Ruby version
|
|
16
|
+
Required Ruby version: > 2.4
|
|
17
17
|
|
|
18
18
|
# <a name="when_to_use"></a>When to use and when not to use
|
|
19
19
|
|
|
@@ -29,7 +29,8 @@ So it is designed for:
|
|
|
29
29
|
|
|
30
30
|
`ascli` can be seen as a command line tool integrating:
|
|
31
31
|
|
|
32
|
-
* a configuration file (config.yaml)
|
|
32
|
+
* a configuration file (config.yaml)
|
|
33
|
+
* advanced command line options
|
|
33
34
|
* cURL (for REST calls)
|
|
34
35
|
* Aspera transfer (ascp)
|
|
35
36
|
|
|
@@ -81,7 +82,7 @@ Once the gem is installed, `ascli` shall be accessible:
|
|
|
81
82
|
|
|
82
83
|
```
|
|
83
84
|
$ ascli --version
|
|
84
|
-
4.
|
|
85
|
+
4.3.0
|
|
85
86
|
```
|
|
86
87
|
|
|
87
88
|
## First use
|
|
@@ -90,9 +91,10 @@ Once installation is completed, you can proceed to the first use with a demo ser
|
|
|
90
91
|
|
|
91
92
|
If you want to test with Aspera on Cloud, jump to section: [Wizard](#aocwizard)
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
To test with Aspera demo transfer server, setup the environment and then test:
|
|
94
95
|
|
|
95
96
|
```
|
|
97
|
+
$ ascli config initdemo
|
|
96
98
|
$ ascli server browse /
|
|
97
99
|
:............:...........:......:........:...........................:.......................:
|
|
98
100
|
: zmode : zuid : zgid : size : mtime : name :
|
|
@@ -112,7 +114,7 @@ If you want to use `ascli` with another server, and in order to make further cal
|
|
|
112
114
|
* download a file
|
|
113
115
|
|
|
114
116
|
```
|
|
115
|
-
$ ascli config id myserver update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=
|
|
117
|
+
$ ascli config id myserver update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=_demo_pass_
|
|
116
118
|
updated: myserver
|
|
117
119
|
$ ascli config id default set server myserver
|
|
118
120
|
updated: default→server to myserver
|
|
@@ -146,18 +148,22 @@ Then, follow the section relative to the product you want to interact with ( Asp
|
|
|
146
148
|
|
|
147
149
|
# <a name="installation"></a>Installation
|
|
148
150
|
|
|
149
|
-
It is possible to install *either*
|
|
151
|
+
It is possible to install *either* directly on the host operating system (Linux, Windows, Macos) or as a docker container.
|
|
150
152
|
|
|
151
|
-
|
|
153
|
+
The direct installation is recommended and consists in installing:
|
|
154
|
+
|
|
155
|
+
* [Ruby](#ruby) version > 2.4
|
|
152
156
|
* [aspera-cli](#the_gem)
|
|
153
157
|
* [Aspera SDK (ascp)](#fasp_prot)
|
|
154
158
|
|
|
155
|
-
The following sections provide information on the installation.
|
|
159
|
+
The following sections provide information on the various installation methods.
|
|
156
160
|
|
|
157
161
|
An internet connection is required for the installation. If you dont have internet for the installation, refer to section [Installation without internet access](#offline_install).
|
|
158
162
|
|
|
159
163
|
## Docker container
|
|
160
164
|
|
|
165
|
+
Use this method only if you know what you do, else use the standard recommended method as described here above.
|
|
166
|
+
|
|
161
167
|
This method installs a docker image that contains: Ruby, ascli and the FASP sdk.
|
|
162
168
|
|
|
163
169
|
Ensure that you have Docker installed.
|
|
@@ -181,11 +187,12 @@ $ ./ascli install
|
|
|
181
187
|
|
|
182
188
|
Start using it !
|
|
183
189
|
|
|
184
|
-
Note that the tool is run in the container.
|
|
190
|
+
Note that the tool is run in the container, so transfers are also executed in the container, not calling host.
|
|
185
191
|
|
|
186
|
-
The wrapping script maps the container folder `/usr/src/app/config` to configuration folder `$HOME/.aspera/ascli
|
|
192
|
+
The wrapping script maps the container folder `/usr/src/app/config` to configuration folder `$HOME/.aspera/ascli` on host.
|
|
187
193
|
|
|
188
194
|
To transfer to/from the native host, you will need to map a volume in docker or use the config folder (already mapped).
|
|
195
|
+
To add local storage as a volume edit the script: ascli and add a `--volume` stanza.
|
|
189
196
|
|
|
190
197
|
## <a name="ruby"></a>Ruby
|
|
191
198
|
|
|
@@ -193,15 +200,15 @@ Use this method to install on the native host.
|
|
|
193
200
|
|
|
194
201
|
A ruby interpreter is required to run the tool or to use the gem and tool.
|
|
195
202
|
|
|
196
|
-
Ruby
|
|
203
|
+
Required Ruby version: > 2.4. Ruby version 3 is also supported.
|
|
197
204
|
|
|
198
|
-
*
|
|
205
|
+
*Ruby can be installed using any method* : rpm, yum, dnf, rvm, brew, windows installer, ... .
|
|
199
206
|
|
|
200
207
|
Refer to the following sections for a proposed method for specific operating systems.
|
|
201
208
|
|
|
202
209
|
The recommended installation method is `rvm` for systems with "bash-like" shell (Linux, Macos, Windows with cygwin, etc...).
|
|
203
210
|
If the generic install is not suitable (e.g. Windows, no cygwin), you can use one of OS-specific install method.
|
|
204
|
-
If you have a simpler better way to install Ruby version
|
|
211
|
+
If you have a simpler better way to install Ruby version > 2.4 : use it !
|
|
205
212
|
|
|
206
213
|
### Generic: RVM: single user installation (not root)
|
|
207
214
|
|
|
@@ -773,7 +780,7 @@ $ ascli config id <option preset> set|delete|show|initialize|update
|
|
|
773
780
|
The command `update` allows the easy creation of [option preset](#lprt) by simply providing the options in their command line format, e.g. :
|
|
774
781
|
|
|
775
782
|
```
|
|
776
|
-
$ ascli config id demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=
|
|
783
|
+
$ ascli config id demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=_demo_pass_ --ts=@json:'{"precalculate_job_size":true}'
|
|
777
784
|
```
|
|
778
785
|
|
|
779
786
|
* This creates a [option preset](#lprt) `demo_server` with all provided options.
|
|
@@ -781,13 +788,13 @@ $ ascli config id demo_server update --url=ssh://demo.asperasoft.com:33001 --use
|
|
|
781
788
|
The command `set` allows setting individual options in a [option preset](#lprt).
|
|
782
789
|
|
|
783
790
|
```
|
|
784
|
-
$ ascli config id demo_server set password
|
|
791
|
+
$ ascli config id demo_server set password _demo_pass_
|
|
785
792
|
```
|
|
786
793
|
|
|
787
794
|
The command `initialize`, like `update` allows to set several parameters at once, but it deletes an existing configuration instead of updating it, and expects a _[Structured Value](#native)_.
|
|
788
795
|
|
|
789
796
|
```
|
|
790
|
-
$ ascli config id demo_server initialize @json:'{"url":"ssh://demo.asperasoft.com:33001","username":"asperaweb","password":"
|
|
797
|
+
$ ascli config id demo_server initialize @json:'{"url":"ssh://demo.asperasoft.com:33001","username":"asperaweb","password":"_demo_pass_","ts":{"precalculate_job_size":true}}'
|
|
791
798
|
```
|
|
792
799
|
|
|
793
800
|
A good practice is to not manually edit the configuration file and use modification commands instead.
|
|
@@ -824,11 +831,19 @@ Note that special plugin name: `config` can be associated with a preset that is
|
|
|
824
831
|
Operations on this preset are done using regular `config` operations:
|
|
825
832
|
|
|
826
833
|
```
|
|
827
|
-
$ ascli config id default set _plugin_name_
|
|
834
|
+
$ ascli config id default set _plugin_name_ _default_preset_for_plugin_
|
|
828
835
|
$ ascli config id default get _plugin_name_
|
|
829
|
-
"
|
|
836
|
+
"_default_preset_for_plugin_"
|
|
830
837
|
```
|
|
831
838
|
|
|
839
|
+
### <a name="lprtdef"></a>Special Plugin: config
|
|
840
|
+
|
|
841
|
+
Plugin `config` (not to be confused with Option preset config) is used to configure `ascli` but it also contains global options.
|
|
842
|
+
|
|
843
|
+
When `ascli` starts, it lookjs for the `default` Option preset and if there is a value for `config`, if so, it loads the option values for any plugin used.
|
|
844
|
+
|
|
845
|
+
If no global default is set by the user, the tool will use `global_common_defaults` when setting global parameters (e.g. `conf ascp use`)
|
|
846
|
+
|
|
832
847
|
### Format of file
|
|
833
848
|
|
|
834
849
|
The configuration file is a hash in a YAML file. Example:
|
|
@@ -844,7 +859,7 @@ cli_default:
|
|
|
844
859
|
demo_server:
|
|
845
860
|
url: ssh://demo.asperasoft.com:33001
|
|
846
861
|
username: asperaweb
|
|
847
|
-
password:
|
|
862
|
+
password: _demo_pass_
|
|
848
863
|
```
|
|
849
864
|
|
|
850
865
|
We can see here:
|
|
@@ -913,7 +928,6 @@ A [option preset](#lprt) value can be removed with `unset`:
|
|
|
913
928
|
$ ascli config id cli_default unset interactive
|
|
914
929
|
```
|
|
915
930
|
|
|
916
|
-
|
|
917
931
|
### Examples
|
|
918
932
|
|
|
919
933
|
For Faspex, Shares, Node (including ATS, Aspera Transfer Service), Console,
|
|
@@ -1033,21 +1047,42 @@ The `config` plugin also allows specification for the use of a local FASP client
|
|
|
1033
1047
|
|
|
1034
1048
|
```
|
|
1035
1049
|
$ ascli config ascp show
|
|
1036
|
-
/Users/laurent/
|
|
1050
|
+
/Users/laurent/.aspera/ascli/sdk/ascp
|
|
1051
|
+
$ ascli config ascp info
|
|
1052
|
+
+--------------------+-----------------------------------------------------------+
|
|
1053
|
+
| key | value |
|
|
1054
|
+
+--------------------+-----------------------------------------------------------+
|
|
1055
|
+
| ascp | /Users/laurent/.aspera/ascli/sdk/ascp |
|
|
1056
|
+
...
|
|
1037
1057
|
```
|
|
1038
1058
|
|
|
1039
1059
|
### Selection of local `ascp`
|
|
1040
1060
|
|
|
1061
|
+
By default, `ascli` uses any found local product with ascp, including SDK.
|
|
1062
|
+
|
|
1041
1063
|
To temporarily use an alternate ascp path use option `ascp_path` (`--ascp-path=`)
|
|
1042
1064
|
|
|
1043
|
-
|
|
1065
|
+
For a permanent change, the command `config ascp use` sets the same parameter for the global default.
|
|
1066
|
+
|
|
1067
|
+
Using a POSIX shell:
|
|
1044
1068
|
|
|
1045
1069
|
```
|
|
1046
1070
|
$ ascli config ascp use '/Users/laurent/Applications/Aspera CLI/bin/ascp'
|
|
1047
|
-
|
|
1071
|
+
ascp version: 4.0.0.182279
|
|
1072
|
+
Updated: global_common_defaults: ascp_path <- /Users/laurent/Applications/Aspera CLI/bin/ascp
|
|
1073
|
+
Saved to default global preset global_common_defaults
|
|
1048
1074
|
```
|
|
1049
1075
|
|
|
1050
|
-
|
|
1076
|
+
Windows:
|
|
1077
|
+
|
|
1078
|
+
```
|
|
1079
|
+
$ ascli config ascp use C:\Users\admin\.aspera\ascli\sdk\ascp.exe
|
|
1080
|
+
ascp version: 4.0.0.182279
|
|
1081
|
+
Updated: global_common_defaults: ascp_path <- C:\Users\admin\.aspera\ascli\sdk\ascp.exe
|
|
1082
|
+
Saved to default global preset global_common_defaults
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
If the path has spaces, read section: [Shell and Command line parsing](#parsing).
|
|
1051
1086
|
|
|
1052
1087
|
### List locally installed Aspera Transfer products
|
|
1053
1088
|
|
|
@@ -1134,7 +1169,7 @@ will effectively push files to the related server from the agent node.
|
|
|
1134
1169
|
|
|
1135
1170
|
### <a name="direct"></a>Direct (local ascp using FASPManager API)
|
|
1136
1171
|
|
|
1137
|
-
By default
|
|
1172
|
+
By default `ascli` uses a local ascp, equivalent to specifying `--transfer=direct`.
|
|
1138
1173
|
`ascli` will detect locally installed Aspera products.
|
|
1139
1174
|
Refer to section [FASP](#client).
|
|
1140
1175
|
|
|
@@ -1144,17 +1179,41 @@ To specify a FASP proxy (only supported with the `direct` agent), set the approp
|
|
|
1144
1179
|
* `EX_http_proxy_url` (proxy for legacy http fallback)
|
|
1145
1180
|
* `EX_ascp_args`
|
|
1146
1181
|
|
|
1147
|
-
The `transfer-info`
|
|
1182
|
+
The `transfer-info` accepts the following optional parameters:
|
|
1148
1183
|
|
|
1149
1184
|
<table>
|
|
1150
|
-
<tr><th>Name</th><th>Default</th><th>Feature</th><th>Description</th></tr>
|
|
1151
|
-
<tr><td>
|
|
1152
|
-
<tr><td>
|
|
1153
|
-
<tr><td>
|
|
1154
|
-
<tr><td>
|
|
1155
|
-
<tr><td>
|
|
1185
|
+
<tr><th>Name</th><th>Type</th><th>Default</th><th>Feature</th><th>Description</th></tr>
|
|
1186
|
+
<tr><td>spawn_timeout_sec</td><td>Float</td><td>3</td><td>Multi session</td><td>Verification time that ascp is running</td></tr>
|
|
1187
|
+
<tr><td>spawn_delay_sec</td><td>Float</td><td>2</td><td>Multi session</td><td>Delay between startup of sessions</td></tr>
|
|
1188
|
+
<tr><td>wss</td><td>Bool</td><td>false</td><td>Web Socket Session</td><td>Enable use of web socket session in case it is available</td></tr>
|
|
1189
|
+
<tr><td>multi_incr_udp</td><td>Bool</td><td>true</td><td>Multi Session</td><td>Increment UDP port on multi-session<br/>If true, each session will have a different UDP port starting at `fasp_port` (or default 33001)<br/>Else, each session will use `fasp_port` (or `ascp` default)</td></tr>
|
|
1190
|
+
<tr><td>resume</td><td>Hash</td><td>nil</td><td>Resumer parameters</td><td>See below</td></tr>
|
|
1156
1191
|
</table>
|
|
1157
1192
|
|
|
1193
|
+
Resume parameters:
|
|
1194
|
+
|
|
1195
|
+
In case of transfer interruption, the agent will resume a transfer up to `iter_max` time.
|
|
1196
|
+
Sleep between iteration is:
|
|
1197
|
+
|
|
1198
|
+
```
|
|
1199
|
+
max( sleep_max , sleep_initial * sleep_factor ^ (iter_index-1) )
|
|
1200
|
+
```
|
|
1201
|
+
|
|
1202
|
+
<table>
|
|
1203
|
+
<tr><th>Name</th><th>Type</th><th>Default</th><th>Feature</th><th>Description</th></tr>
|
|
1204
|
+
<tr><td>iter_max</td><td>int</td><td>7</td><td>Resume</td><td>Max number of retry on error</td></tr>
|
|
1205
|
+
<tr><td>sleep_initial</td><td>int</td><td>2</td><td>Resume</td><td>First Sleep before retry</td></tr>
|
|
1206
|
+
<tr><td>sleep_factor</td><td>int</td><td>2</td><td>Resume</td><td>Multiplier of Sleep</td></tr>
|
|
1207
|
+
<tr><td>sleep_max</td><td>int</td><td>60</td><td>Resume</td><td>Maximum sleep</td></tr>
|
|
1208
|
+
</table>
|
|
1209
|
+
|
|
1210
|
+
Examples:
|
|
1211
|
+
|
|
1212
|
+
```
|
|
1213
|
+
$ ascli ... --transfer-info=@json:'{"wss":true,"resume":{"iter_max":10}}'
|
|
1214
|
+
$ ascli ... --transfer-info=@json:'{"spawn_delay_sec":2.5,"multi_incr_udp":false}'
|
|
1215
|
+
```
|
|
1216
|
+
|
|
1158
1217
|
### IBM Aspera Connect Client GUI
|
|
1159
1218
|
|
|
1160
1219
|
By specifying option: `--transfer=connect`, `ascli` will start transfers
|
|
@@ -1204,7 +1263,7 @@ is described in a _transfer-spec_ (Transfer Specification), such as:
|
|
|
1204
1263
|
|
|
1205
1264
|
`ascli` builds a default _transfer-spec_ internally, so it is not necessary to provide additional parameters on the command line for this transfer.
|
|
1206
1265
|
|
|
1207
|
-
If needed, it is possible to modify or add any of the supported _transfer-spec_ parameter using the `ts` option. The `ts` option accepts a [Structured Value](#native) containing one or several _transfer-spec_ parameters.
|
|
1266
|
+
If needed, it is possible to modify or add any of the supported _transfer-spec_ parameter using the `ts` option. The `ts` option accepts a [Structured Value](#native) containing one or several _transfer-spec_ parameters. Multiple `ts` options on command line are cummulative.
|
|
1208
1267
|
|
|
1209
1268
|
It is possible to specify ascp options when the `transfer` option is set to `direct` using the special [_transfer-spec_](#transferspec) parameter: `EX_ascp_args`. Example: `--ts=@json:'{"EX_ascp_args":["-l","100m"]}'`. This is espacially useful for ascp command line parameters not supported yet in the transfer spec.
|
|
1210
1269
|
|
|
@@ -1217,97 +1276,31 @@ A [_transfer-spec_](#transferspec) is a Hash table, so it is described on the co
|
|
|
1217
1276
|
|
|
1218
1277
|
## <a name="transferparams"></a>Transfer Parameters
|
|
1219
1278
|
|
|
1220
|
-
All standard _transfer-spec_ parameters can be
|
|
1221
|
-
|
|
1222
|
-
|
|
1279
|
+
All standard _transfer-spec_ parameters can be speficied.
|
|
1280
|
+
[_transfer-spec_](#transferspec) can also be saved/overridden in the config file.
|
|
1281
|
+
|
|
1282
|
+
References:
|
|
1283
|
+
|
|
1284
|
+
* [Aspera Node API Documentation](https://developer.ibm.com/apis/catalog?search=%22aspera%20node%20api%22)→/opt/transfers
|
|
1285
|
+
* [Aspera Transfer SDK Documentation](https://developer.ibm.com/apis/catalog?search=%22aspera%20transfer%20sdk%22)→Guides→API Ref→Transfer Spec V1
|
|
1286
|
+
|
|
1287
|
+
Parameters can be displayed with commands:
|
|
1223
1288
|
|
|
1289
|
+
```
|
|
1290
|
+
$ ascli config ascp spec
|
|
1291
|
+
$ ascli config ascp spec --select=@json:'{"f":"Y"}' --fields=-f,n,c
|
|
1292
|
+
```
|
|
1224
1293
|
|
|
1225
|
-
<p>
|
|
1226
1294
|
Columns:
|
|
1227
|
-
<ul>
|
|
1228
|
-
<li>F=Fasp Manager(local FASP execution)</li>
|
|
1229
|
-
<li>N=remote node(node API)</li>
|
|
1230
|
-
<li>C=Connect Client(web plugin)</li>
|
|
1231
|
-
</ul>
|
|
1232
|
-
</p>
|
|
1233
|
-
<p>
|
|
1234
|
-
Req/Def : Required or default value (- means emty)
|
|
1235
|
-
</p>
|
|
1236
|
-
<p>
|
|
1237
|
-
Fields with EX_ prefix are specific extensions to local mode.
|
|
1238
|
-
</p>
|
|
1239
|
-
<p>
|
|
1240
|
-
arg: related ascp argument or env var suffix (PASS for ASPERA_SCP_PASS)
|
|
1241
|
-
</p>
|
|
1242
|
-
<p>
|
|
1243
|
-
UNDER CONSTRUCTION<br/>
|
|
1244
|
-
<a href="https://developer.ibm.com/apis/catalog/?search=aspera">Aspera API Documentation</a>→Node API→/opt/transfers<br/>
|
|
1245
|
-
</p>
|
|
1246
1295
|
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
<tr><td>title</td><td>-</td><td>string</td><td class="no">N</td><td class="yes">Y</td><td class="yes">Y</td><td>-</td><td>Title of the transfer</td></tr>
|
|
1254
|
-
<tr><td>tags</td><td>-</td><td>hash</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--tags<br>--tags64</td><td>Metadata for transfer</td></tr>
|
|
1255
|
-
<tr><td>token</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>TOKEN<br/>-W</td><td>Authorization token: Bearer, Basic or ATM</td></tr>
|
|
1256
|
-
<tr><td>cookie</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>COOKIE</td><td>Metadata for transfer (older,string)</td></tr>
|
|
1257
|
-
<tr><td>remote_access_key</td><td>TODO</td><td>string</td><td></td><td></td><td></td><td>?</td><td>Node only?</td></tr>
|
|
1258
|
-
<tr><td>source_root</td><td>-</td><td>string</td><td></td><td></td><td></td><td>--source-prefix<br/>--source-prefix64</td><td>Source root directory.(TODO: verify option)</td></tr>
|
|
1259
|
-
<tr><td>fasp_port</td><td>33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-O</td><td>Specifies fasp (UDP) port.</td></tr>
|
|
1260
|
-
<tr><td>ssh_port</td><td>22 or 33001</td><td>integer</td></td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-P</td><td>Specifies ssh (TCP) port.</td></tr>
|
|
1261
|
-
<tr><td>rate_policy</td><td>server config</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--policy</td><td>Valid literals include "low","fair","high" and "fixed".</td></tr>
|
|
1262
|
-
<tr><td>symlink_policy</td><td>follow</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--symbolic-links</td><td>copy, follow, copy+force, skip. Default is follow. Handle source side symbolic links by following the link (follow), copying the link itself (copy), skipping (skip), or forcibly copying the link itself (copy+force).</td></tr>
|
|
1263
|
-
<tr><td>target_rate_kbps</td><td>-</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-l</td><td>Specifies desired speed for the transfer.</td></tr>
|
|
1264
|
-
<tr><td>min_rate_kbps</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-m</td><td>Set the minimum transfer rate in kilobits per second.</td></tr>
|
|
1265
|
-
<tr><td>cipher</td><td>none</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-c</td><td>in transit encryption type.<br/>none, aes-128, aes-256</td></tr>
|
|
1266
|
-
<tr><td>content_protection</td><td>encrypt<br/>decrypt</td><td>string</td><td></td><td></td><td></td><td>--file-crypt=</td><td>encryption at rest</td></tr>
|
|
1267
|
-
<tr><td>content_protection_password</td><td>-</td><td>string</td><td></td><td></td><td></td><td>PASS</td><td>Specifies a string password.</td></tr>
|
|
1268
|
-
<tr><td>overwrite</td><td>diff</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--overwrite</td><td>Overwrite destination files with the source files of the same name.<br/>never, always, diff, older, or diff+older</td></tr>
|
|
1269
|
-
<tr><td>retry_duration</td><td></td><td>string</td><td></td><td></td><td></td><td>TODO</td><td>Specifies how long to wait before retrying transfer. (e.g. "5min")</td></tr>
|
|
1270
|
-
<tr><td>http_fallback</td><td></td><td>bool (node), integer</td><td></td><td></td><td></td><td>-y<br/>TODO</td><td>When true(1), attempts to perform an HTTP transfer if a fasp transfer cannot be performed.</td></tr>
|
|
1271
|
-
<tr><td>create_dir</td><td></td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-d</td><td>Specifies whether to create new directories.</td></tr>
|
|
1272
|
-
<tr><td>precalculate_job_size</td><td>srv. def.</td><td>boolean</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>--precalculate-job-size</td><td>Specifies whether to precalculate the job size.</td></tr>
|
|
1273
|
-
<tr><td>delete_source</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>?</td></tr>
|
|
1274
|
-
<tr><td>remove_after_transfer</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove file after transfer.</td></tr>
|
|
1275
|
-
<tr><td>remove_empty_directories</td><td></td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>?</td><td>Specifies whether to remove empty directories.</td></tr>
|
|
1276
|
-
<tr><td>multi_session</td><td>1</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-C</td><td>Specifies how many parts the transfer is in.</td></tr>
|
|
1277
|
-
<tr><td>multi_session_threshold</td><td>null</td><td>integer</td><td class="no">N</td><td class="yes">Y</td><td class="no">N</td><td>-</td><td>in bytes</td></tr>
|
|
1278
|
-
<tr><td>exclude_newer_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-newer-than</td><td>-</td></tr>
|
|
1279
|
-
<tr><td>exclude_older_than</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>--exclude-older-than</td><td>-</td></tr>
|
|
1280
|
-
<tr><td>preserve_acls</td><td></td><td>string</td><td class="yes">Y</td><td></td><td></td><td>--preserve-acls</td><td>-</td></tr>
|
|
1281
|
-
<tr><td>dgram_size</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-Z</td><td>in bytes</td></tr>
|
|
1282
|
-
<tr><td>compression</td><td></td><td>integer</td><td></td><td></td><td></td><td></td><td>ascp4 only, 0 / 1?</td></tr>
|
|
1283
|
-
<tr><td>read_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
|
|
1284
|
-
<tr><td>write_threads</td><td></td><td>integer</td><td></td><td></td><td></td><td>-</td><td>ascp4 only</td></tr>
|
|
1285
|
-
<tr><td>use_ascp4</td><td>false</td><td>boolean</td><td></td><td class="yes">Y</td><td></td><td>-</td><td>specify version of protocol</td></tr>
|
|
1286
|
-
<tr><td>paths</td><td>source files (dest)</td><td>array</td><td></td><td></td><td></td><td>positional<br/>--file-list<br/>--file-pair-list</td><td>Contains a path to the source (required) and a path to the destination.</td></tr>
|
|
1287
|
-
<tr><td>http_fallback_port</td><td></td><td>integer</td><td class="yes">Y</td><td></td><td></td><td>-t</td><td>Specifies http port.</td></tr>
|
|
1288
|
-
<tr><td>https_fallback_port</td><td></td><td>integer</td><td></td><td></td><td></td><td>todo</td><td>Specifies https port.</td></tr>
|
|
1289
|
-
<tr><td>cipher_allowed</td><td></td><td>string</td><td></td><td></td><td></td><td>-</td><td>returned by node API. Valid literals include "aes-128" and "none".</td></tr>
|
|
1290
|
-
<tr><td>target_rate_cap_kbps</td><td></td><td></td><td class="no">N</td><td class="no">?</td><td class="yes">?</td><td>-</td><td>Returned by upload/download_setup node api.</td></tr>
|
|
1291
|
-
<tr><td>rate_policy_allowed</td><td></td><td></td><td></td><td></td><td></td><td>-</td><td>returned by node API. Specifies most aggressive rate policy that is allowed. Valid literals include "low", "fair","high" and "fixed".</td></tr>
|
|
1292
|
-
<tr><td>ssh_private_key</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>KEY</td><td>Private key used for SSH authentication, Shall look like: `-----BEGIN RSA PRIVATE KEY-----\nMII`<br/>Note the JSON encoding `\` + `n` for newlines.</td></tr>
|
|
1293
|
-
<tr><td>remote_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>PASS</td><td>SSH session password</td></tr>
|
|
1294
|
-
<tr><td>resume_policy</td><td>faspmgr:<br/>none<br/>other:<br/>sparse_csum</td><td>string</td><td class="yes">Y</td><td class="yes">Y</td><td class="yes">Y</td><td>-k</td><td>none,attrs,sparse_csum,full_csum</td></tr>
|
|
1295
|
-
<tr><td>authentication</td><td>-</td><td class="no">N</td><td class="no">N</td><td class="yes">Y</td><td>-</td><td>token: Aspera web keys are provided to allow transparent web based session initiation. on connect: password is not asked. Else, password is asked, and keys are not provided.</td></tr>
|
|
1296
|
-
<tr><td>EX_ssh_key_paths</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-i</td><td>Use public key authentication and specify the private key file</td></tr>
|
|
1297
|
-
<tr><td>EX_at_rest_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>FILEPASS</td><td>Passphrase used for at rest encryption or decryption</td></tr>
|
|
1298
|
-
<tr><td>EX_proxy_password</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>PROXY_PASS</td><td>TODO</td></tr>
|
|
1299
|
-
<tr><td>EX_fasp_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--proxy</td><td>Specify the address of the Aspera high-speed proxy server</td></tr>
|
|
1300
|
-
<tr><td>EX_http_proxy_url</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-x</td><td>Specify the proxy server address used by HTTP Fallback</td></tr>
|
|
1301
|
-
<tr><td>EX_ascp_args</td><td>-</td><td>array</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>same</td><td>Add command line arguments to ascp</td></tr>
|
|
1302
|
-
<tr><td>EX_http_transfer_jpeg</td><td>0</td><td>integer</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-j</td><td>HTTP transfers as JPEG file</td></tr>
|
|
1303
|
-
<tr><td>EX_license_text</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>LICENSE</td><td>license file text</td></tr>
|
|
1304
|
-
<tr><td>EX_file_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-list</td><td>source file list</td></tr>
|
|
1305
|
-
<tr><td>EX_file_pair_list</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--file-pair-list</td><td>source file pair list</td></tr>
|
|
1306
|
-
<tr><td>EX_multi_session_part</td><td>-</td><td>string</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>-C</td><td>part for multisession</td></tr>
|
|
1307
|
-
<tr><td>EX_no_read</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-read</td><td>no read source</td></tr>
|
|
1308
|
-
<tr><td>EX_no_write</td><td>-</td><td>-</td><td class="yes">Y</td><td class="no">N</td><td class="no">N</td><td>--no-write</td><td>no write estination</td></tr>
|
|
1309
|
-
</table>
|
|
1296
|
+
* D=Direct (local `ascp` execution)
|
|
1297
|
+
* N=Node API
|
|
1298
|
+
* C=Connect Client
|
|
1299
|
+
* arg=`ascp` argument or environment variable
|
|
1300
|
+
|
|
1301
|
+
Fields with EX_ prefix are extensions to transfer agent `direct`. (only in `ascli`).
|
|
1310
1302
|
|
|
1303
|
+
<table><tr><th>Field</th><th>Type</th><th>D</th><th>N</th><th>C</th><th>Description</th></tr><tr><td>cipher</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>In transit encryption type.<br/>none, aes-128, aes-256<br/>Allowed values: aes128, aes192, aes256, aes128cfb, aes192cfb, aes256cfb, aes128gcm, aes192gcm, aes256gcm<br/>(-c)</td></tr><tr><td>content_protection</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Enable client-side content protection. (encryption at rest)<br/>Allowed values: encrypt, decrypt</td></tr><tr><td>content_protection_password</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies CSEAR password.</td></tr><tr><td>cookie</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Metadata for transfer (older,string)<br/>(env:ASPERA_SCP_COOKIE)</td></tr><tr><td>create_dir</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies whether to create new directories.<br/>(-d)</td></tr><tr><td>delete_before_transfer</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--delete-before-transfer)</td></tr><tr><td>delete_source</td><td>bool</td><td> </td><td>Y</td><td> </td><td>Remove SRC files after transfer success</td></tr><tr><td>direction</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Direction of transfer (on client side)<br/>Allowed values: send, receive<br/>(--mode)</td></tr><tr><td>exclude_newer_than</td><td>int</td><td>Y</td><td> </td><td> </td><td>skip src files with mtime > arg<br/>(--exclude-newer-than)</td></tr><tr><td>exclude_older_than</td><td>int</td><td>Y</td><td> </td><td> </td><td>skip src files with mtime < arg<br/>(--exclude-older-than)</td></tr><tr><td>fasp_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies fasp (UDP) port.<br/>(-O)</td></tr><tr><td>http_fallback</td><td>string<br/>bool</td><td>Y</td><td>Y</td><td>Y</td><td>When true(1), attempts to perform an HTTP transfer if a fasp transfer cannot be performed.<br/>(-y)</td></tr><tr><td>http_fallback_port</td><td>int</td><td>Y</td><td> </td><td> </td><td>Specifies http port.<br/>(-t)</td></tr><tr><td>https_fallback_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies https port.</td></tr><tr><td>move_after_transfer</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>(--move-after-transfer)</td></tr><tr><td>multi_session</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Use multi-session transfer. max 128.<br/> Each participant on one host needs an independent UDP (-O) port.<br/> Large files are split between sessions only when transferring with resume_policy=none.</td></tr><tr><td>multi_session_threshold</td><td>int</td><td>Y</td><td>Y</td><td> </td><td>in bytes<br/>(--multi-session-threshold)</td></tr><tr><td>overwrite</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Overwrite destination files with the source files of the same name.<br/>Allowed values: never, always, diff, older, diff+older<br/>(--overwrite)</td></tr><tr><td>paths</td><td>array</td><td>Y</td><td>Y</td><td>Y</td><td>Required. Contains a path to the source (required) and a path to the destination.</td></tr><tr><td>precalculate_job_size</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies whether to precalculate the job size.<br/>(--precalculate-job-size)</td></tr><tr><td>preserve_access_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-access-time)</td></tr><tr><td>preserve_creation_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-creation-time)</td></tr><tr><td>preserve_modification_time</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-modification-time)</td></tr><tr><td>preserve_times</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td>(--preserve-times)</td></tr><tr><td>rate_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>The transfer rate policy to use when sharing bandwidth.<br/>Allowed values: low, fair, high, fixed<br/>(--policy)</td></tr><tr><td>remote_access_key</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Node only?</td></tr><tr><td>remote_host</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>IP or fully qualified domain name of the remote server<br/>(--host)</td></tr><tr><td>remote_user</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Remote user. Default value is "xfer" on node or connect.<br/>(--user)</td></tr><tr><td>remote_password</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>SSH session password<br/>(env:ASPERA_SCP_PASS)</td></tr><tr><td>remove_after_transfer</td><td>bool</td><td>Y</td><td>Y</td><td> </td><td>Remove SRC files after transfer success<br/>(--remove-after-transfer)</td></tr><tr><td>remove_empty_directories</td><td>bool</td><td>Y</td><td>Y</td><td> </td><td>Specifies whether to remove empty directories.<br/>(--remove-empty-directories)</td></tr><tr><td>proxy</td><td>string</td><td>Y</td><td> </td><td> </td><td>Specify the address of the Aspera high-speed proxy server.<br/> dnat(s)://[user[:password]@]server:port<br/> Default ports for DNAT and DNATS protocols are 9091 and 9092.<br/> Password, if specified here, overrides the value of environment variable ASPERA_PROXY_PASS.<br/>(--proxy)</td></tr><tr><td>resume_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>If a transfer is interrupted or fails to finish, resume without re-transferring the whole files.<br/>Allowed values: none, attrs, sparse_csum, full_csum<br/>(-k)</td></tr><tr><td>retry_duration</td><td>string<br/>int</td><td> </td><td>Y</td><td>Y</td><td>Specifies how long to wait before retrying transfer. (e.g. "5min")</td></tr><tr><td>ssh_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies ssh (TCP) port. Default: local:22, other:33001<br/>(-P)</td></tr><tr><td>ssh_private_key</td><td>string</td><td>Y</td><td> </td><td> </td><td>Private key used for SSH authentication.<br/> Shall look like: -----BEGIN RSA PRIVATE KEY-----\nMII...<br/> Note the JSON encoding: \n for newlines.<br/>(env:ASPERA_SCP_KEY)</td></tr><tr><td>symlink_policy</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Handle source side symbolic links by:<br/> following the link (follow),<br/> copying the link itself (copy),<br/> skipping (skip),<br/> or forcibly copying the link itself (copy+force).<br/> Default: follow<br/>Allowed values: follow, copy, copy+force, skip<br/>(--symbolic-links)</td></tr><tr><td>tags</td><td>hash</td><td>Y</td><td>Y</td><td>Y</td><td>Metadata for transfer<br/>(--tags64)</td></tr><tr><td>target_rate_cap_kbps</td><td>int</td><td> </td><td> </td><td>Y</td><td>Returned by upload/download_setup node api.</td></tr><tr><td>target_rate_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Specifies desired speed for the transfer.<br/>(-l)</td></tr><tr><td>title</td><td>string</td><td> </td><td>Y</td><td>Y</td><td>Title of the transfer</td></tr><tr><td>token</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Authorization token: Bearer, Basic or ATM (Also arg -W)<br/>(env:ASPERA_SCP_TOKEN)</td></tr><tr><td>use_ascp4</td><td>bool</td><td>Y</td><td>Y</td><td> </td><td>specify version of protocol</td></tr><tr><td>destination_root</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Destination root directory.</td></tr><tr><td>source_root</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Path to be prepended to each source path.<br/> This is either a conventional path or it can be a URI but only if there is no root defined.<br/>(--source-prefix64)</td></tr><tr><td>min_rate_cap_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_rate_policy</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_target_rate_kbps</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_min_rate_kbps</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>apply_local_docroot</td><td>bool</td><td>Y</td><td> </td><td> </td><td>(--apply-local-docroot)</td></tr><tr><td>preserve_acls</td><td>string</td><td>Y</td><td> </td><td> </td><td>Preserve access control lists.<br/>Allowable values: none, native, metafile<br/>(--preserve-acls)</td></tr><tr><td>remove_empty_source_directory</td><td>bool</td><td>Y</td><td> </td><td> </td><td>TODO: check node, sdk<br/>(--remove-empty-source-directory)</td></tr><tr><td>EX_at_rest_password</td><td>string</td><td>Y</td><td> </td><td> </td><td>Passphrase used for at rest encryption or decryption<br/>(env:ASPERA_SCP_FILEPASS)</td></tr><tr><td>EX_proxy_password</td><td>string</td><td>Y</td><td> </td><td> </td><td>Password used for Aspera proxy server authentication.<br/> May be overridden by password in URL EX_fasp_proxy_url.<br/>(env:ASPERA_PROXY_PASS)</td></tr><tr><td>EX_license_text</td><td>string</td><td>Y</td><td> </td><td> </td><td>License file text override.<br/>By default ascp looks for license file near executable.<br/>(env:ASPERA_SCP_LICENSE)</td></tr><tr><td>dgram_size</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>in bytes<br/>(-Z)</td></tr><tr><td>min_rate_kbps</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td>Set the minimum transfer rate in kilobits per second.<br/>(-m)</td></tr><tr><td>sshfp</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>Check it against server SSH host key fingerprint<br/>(--check-sshfp)</td></tr><tr><td>EX_http_proxy_url</td><td>string</td><td>Y</td><td> </td><td> </td><td>Specify the proxy server address used by HTTP Fallback<br/>(-x)</td></tr><tr><td>EX_ssh_key_paths</td><td>array</td><td>Y</td><td> </td><td> </td><td>Use public key authentication for SSH and specify the private key file paths<br/>(-i)</td></tr><tr><td>EX_http_transfer_jpeg</td><td>int</td><td>Y</td><td> </td><td> </td><td>HTTP transfers as JPEG file<br/>(-j)</td></tr><tr><td>EX_no_read</td><td>bool</td><td>Y</td><td> </td><td> </td><td>no read source<br/>(--no-read)</td></tr><tr><td>EX_no_write</td><td>bool</td><td>Y</td><td> </td><td> </td><td>no write on destination<br/>(--no-write)</td></tr><tr><td>target_rate_percentage</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>rate_policy_allowed</td><td>string</td><td> </td><td> </td><td>Y</td><td>Specifies most aggressive rate policy that is allowed.<br/> Returned by node API.<br/>Allowed values: low, fair, high, fixed</td></tr><tr><td>lock_min_rate</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>lock_target_rate</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>authentication</td><td>string</td><td> </td><td> </td><td>Y</td><td>value=token for SSH bypass keys, else password asked if not provided.</td></tr><tr><td>cipher_allowed</td><td>string</td><td>Y</td><td>Y</td><td>Y</td><td>returned by node API. Valid literals include "aes-128" and "none".</td></tr><tr><td>EX_file_list</td><td>string</td><td>Y</td><td> </td><td> </td><td>source file list</td></tr><tr><td>EX_file_pair_list</td><td>string</td><td>Y</td><td> </td><td> </td><td>source file pair list</td></tr><tr><td>EX_ascp_args</td><td>array</td><td>Y</td><td> </td><td> </td><td>Add command line arguments to ascp</td></tr><tr><td>wss_enabled</td><td>bool</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr><tr><td>wss_port</td><td>int</td><td>Y</td><td>Y</td><td>Y</td><td> </td></tr></table>
|
|
1311
1304
|
|
|
1312
1305
|
### Destination folder for transfers
|
|
1313
1306
|
|
|
@@ -1389,7 +1382,7 @@ Source files are located on "Aspera on cloud", when :
|
|
|
1389
1382
|
|
|
1390
1383
|
### <a name="multisession"></a>Support of multi-session
|
|
1391
1384
|
|
|
1392
|
-
Multi session, i.e. starting a transfer of a file set using multiple sessions is supported on "direct" and "node" agents, not yet on connect.
|
|
1385
|
+
Multi session, i.e. starting a transfer of a file set using multiple sessions (one ascp process per session) is supported on "direct" and "node" agents, not yet on connect.
|
|
1393
1386
|
|
|
1394
1387
|
* when agent=node :
|
|
1395
1388
|
|
|
@@ -1410,6 +1403,7 @@ shall be preferred.
|
|
|
1410
1403
|
|
|
1411
1404
|
Multi-session spawn is done by `ascli`.
|
|
1412
1405
|
|
|
1406
|
+
When multi-session is used, one separate UDP port is used per session (refer to `ascp` manual page).
|
|
1413
1407
|
|
|
1414
1408
|
### Examples
|
|
1415
1409
|
|
|
@@ -1456,7 +1450,9 @@ A non complete list of commands used in unit tests:
|
|
|
1456
1450
|
```
|
|
1457
1451
|
ascli
|
|
1458
1452
|
ascli -h
|
|
1459
|
-
ascli aoc
|
|
1453
|
+
ascli aoc -N remind --username=my_aoc_user_email
|
|
1454
|
+
ascli aoc -N servers
|
|
1455
|
+
ascli aoc admin analytics transfers --query=@json:'{"status":"completed","direction":"receive"}' --notif-to=my_recipient_email --notif-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: <%=ev["files_completed"]%> files received\n\n<%=ev.to_yaml%>}'
|
|
1460
1456
|
ascli aoc admin ats access_key --id=akibmcloud --secret=somesecret node browse /
|
|
1461
1457
|
ascli aoc admin ats access_key --id=akibmcloud delete
|
|
1462
1458
|
ascli aoc admin ats access_key create --cloud=aws --region=my_aws_bucket_region --params=@json:'{"id":"ak_aws","name":"my test key AWS","storage":{"type":"aws_s3","bucket":"my_aws_bucket_name","credentials":{"access_key_id":"my_aws_bucket_key","secret_access_key":"my_aws_bucket_secret"},"path":"/"}}'
|
|
@@ -1494,7 +1490,6 @@ ascli aoc admin resource node --name=AOC_NODE1_NAME --secret=AOC_NODE1_SECRET v4
|
|
|
1494
1490
|
ascli aoc admin resource node --name=AOC_NODE1_NAME --secret=AOC_NODE1_SECRET v4 mkdir /folder1
|
|
1495
1491
|
ascli aoc admin resource workspace list
|
|
1496
1492
|
ascli aoc admin resource workspace_membership list --fields=ALL --query=@json:'{"page":1,"per_page":50,"embed":"member","inherited":false,"workspace_id":11363,"sort":"name"}'
|
|
1497
|
-
ascli aoc apiinfo
|
|
1498
1493
|
ascli aoc automation workflow --id="my_wf_id" action create --value=@json:'{"name":"toto"}' | tee action.info
|
|
1499
1494
|
ascli aoc automation workflow create --value=@json:'{"name":"test_workflow"}'
|
|
1500
1495
|
ascli aoc automation workflow delete --id="my_wf_id"
|
|
@@ -1504,6 +1499,7 @@ ascli aoc automation workflow list --value=@json:'{"show_org_workflows":"true"}'
|
|
|
1504
1499
|
ascli aoc bearer_token --display=data --scope=user:all
|
|
1505
1500
|
ascli aoc faspex
|
|
1506
1501
|
ascli aoc files bearer /
|
|
1502
|
+
ascli aoc files bearer_token_node /
|
|
1507
1503
|
ascli aoc files browse /
|
|
1508
1504
|
ascli aoc files browse / -N --link=my_aoc_publink_folder
|
|
1509
1505
|
ascli aoc files delete /testsrc
|
|
@@ -1519,6 +1515,7 @@ ascli aoc files short_link list --value=@json:'{"purpose":"shared_folder_auth_li
|
|
|
1519
1515
|
ascli aoc files transfer --from-folder=/testsrc --to-folder=/testdst testfile.bin
|
|
1520
1516
|
ascli aoc files upload --to-folder=/testsrc testfile.bin
|
|
1521
1517
|
ascli aoc files upload -N --to-folder=/ testfile.bin --link=my_aoc_publink_folder
|
|
1518
|
+
ascli aoc files upload Test.pdf --transfer=node --transfer-info=@json:@stdin:
|
|
1522
1519
|
ascli aoc files v3 info
|
|
1523
1520
|
ascli aoc org -N --link=my_aoc_publink_recv_from_aocuser
|
|
1524
1521
|
ascli aoc organization
|
|
@@ -1531,7 +1528,6 @@ ascli aoc packages send --value=@json:'{"name":"Important files delivery","recip
|
|
|
1531
1528
|
ascli aoc packages send --workspace="my_aoc_shbx_ws" --value=@json:'{"name":"Important files delivery","recipients":["my_aoc_shbx_name"]}' testfile.bin
|
|
1532
1529
|
ascli aoc packages send -N --value=@json:'{"name":"Important files delivery"}' testfile.bin --link=my_aoc_publink_send_aoc_user --password=my_aoc_publink_send_use_pass
|
|
1533
1530
|
ascli aoc packages send -N --value=@json:'{"name":"Important files delivery"}' testfile.bin --link=my_aoc_publink_send_shd_inbox
|
|
1534
|
-
ascli aoc servers
|
|
1535
1531
|
ascli aoc user info modify @json:'{"name":"dummy change"}'
|
|
1536
1532
|
ascli aoc user info show
|
|
1537
1533
|
ascli aoc workspace
|
|
@@ -1550,8 +1546,8 @@ ascli ats cluster list
|
|
|
1550
1546
|
ascli ats cluster show --cloud=aws --region=eu-west-1
|
|
1551
1547
|
ascli ats cluster show --id=1f412ae7-869a-445c-9c05-02ad16813be2
|
|
1552
1548
|
ascli conf flush_tokens
|
|
1553
|
-
ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=
|
|
1554
|
-
ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=
|
|
1549
|
+
ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=my_aoc_user_email --test-mode=yes
|
|
1550
|
+
ascli conf wiz --url=https://my_aoc_org.ibmaspera.com --config-file=SAMPLE_CONFIG_FILE --pkeypath='' --username=my_aoc_user_email --test-mode=yes --use-generic-client=yes
|
|
1555
1551
|
ascli config ascp connect id 'Aspera Connect for Windows' info
|
|
1556
1552
|
ascli config ascp connect id 'Aspera Connect for Windows' links id 'Windows Installer' download --to-folder=.
|
|
1557
1553
|
ascli config ascp connect id 'Aspera Connect for Windows' links list
|
|
@@ -1563,14 +1559,14 @@ ascli config ascp show
|
|
|
1563
1559
|
ascli config check_update
|
|
1564
1560
|
ascli config doc
|
|
1565
1561
|
ascli config doc transfer-parameters
|
|
1566
|
-
ascli config email_test
|
|
1562
|
+
ascli config email_test --notif-to=my_recipient_email
|
|
1567
1563
|
ascli config export
|
|
1568
1564
|
ascli config genkey mykey
|
|
1569
1565
|
ascli config plugins
|
|
1570
1566
|
ascli config proxy_check --fpac=file:///examples/proxy.pac https://eudemo.asperademo.com
|
|
1571
1567
|
ascli console transfer current list
|
|
1572
1568
|
ascli console transfer smart list
|
|
1573
|
-
ascli console transfer smart sub
|
|
1569
|
+
ascli console transfer smart sub my_job_id @json:'{"source":{"paths":["my_file_name"]},"source_type":"user_selected"}'
|
|
1574
1570
|
ascli cos -N --bucket=my_icos_bucket_name --endpoint=my_icos_bucket_endpoint --apikey=my_icos_bucket_apikey --crn=my_icos_resource_instance_id node info
|
|
1575
1571
|
ascli cos -N --bucket=my_icos_bucket_name --region=my_icos_bucket_region --service-credentials=@json:@file:service_creds.json node info
|
|
1576
1572
|
ascli cos node access_key --id=self show
|
|
@@ -1592,7 +1588,7 @@ ascli faspex source name "Server Files" node br /
|
|
|
1592
1588
|
ascli faspex5 node list --value=@json:'{"type":"received","subtype":"mypackages"}'
|
|
1593
1589
|
ascli faspex5 package list --value=@json:'{"mailbox":"inbox","state":["released"]}'
|
|
1594
1590
|
ascli faspex5 package receive --id="my_package_id" --to-folder=.
|
|
1595
|
-
ascli faspex5 package send --value=@json:'{"title":"test title","recipients":["${f5_user}"]}' testfile.bin
|
|
1591
|
+
ascli faspex5 package send --value=@json:'{"title":"test title","recipients":[{"name":"${f5_user}"}]}' testfile.bin
|
|
1596
1592
|
ascli node -N -Ptst_node_preview access_key create --value=@json:'{"id":"aoc_1","storage":{"type":"local","path":"/"}}'
|
|
1597
1593
|
ascli node -N -Ptst_node_preview access_key delete --id=aoc_1
|
|
1598
1594
|
ascli node async --id=1 bandwidth
|
|
@@ -1648,7 +1644,7 @@ ascli server delete NEW_SERVER_FOLDER
|
|
|
1648
1644
|
ascli server delete folder_1/target_hot
|
|
1649
1645
|
ascli server delete folder_1/to.delete
|
|
1650
1646
|
ascli server df
|
|
1651
|
-
ascli server download NEW_SERVER_FOLDER/testfile.bin --to-folder=.
|
|
1647
|
+
ascli server download NEW_SERVER_FOLDER/testfile.bin --to-folder=. --transfer-info=@json:'{"wss":false,"resume":{"iter_max":1}}'
|
|
1652
1648
|
ascli server download NEW_SERVER_FOLDER/testfile.bin --to-folder=folder_1 --transfer=node
|
|
1653
1649
|
ascli server du /
|
|
1654
1650
|
ascli server health transfer --to-folder=folder_1 --format=nagios
|
|
@@ -1659,9 +1655,9 @@ ascli server mkdir folder_1/target_hot
|
|
|
1659
1655
|
ascli server mv folder_1/200KB.2 folder_1/to.delete
|
|
1660
1656
|
ascli server upload --sources=@ts --ts=@json:'{"paths":[{"source":"testfile.bin","destination":"NEW_SERVER_FOLDER/othername"}]}'
|
|
1661
1657
|
ascli server upload --src-type=pair --sources=@json:'["testfile.bin","NEW_SERVER_FOLDER/othername"]'
|
|
1662
|
-
ascli server upload --src-type=pair testfile.bin NEW_SERVER_FOLDER/othername
|
|
1658
|
+
ascli server upload --src-type=pair testfile.bin NEW_SERVER_FOLDER/othername --notif-to=my_recipient_email
|
|
1663
1659
|
ascli server upload --to-folder=folder_1/target_hot --lock-port=12345 --ts=@json:'{"EX_ascp_args":["--remove-after-transfer","--remove-empty-directories","--exclude-newer-than=-8","--src-base","source_hot"]}' source_hot
|
|
1664
|
-
ascli server upload testfile.bin --to-folder=NEW_SERVER_FOLDER
|
|
1660
|
+
ascli server upload testfile.bin --to-folder=NEW_SERVER_FOLDER --ts=@json:'{"multi_session":3,"multi_session_threshold":1,"resume_policy":"none","target_rate_kbps":1500}' --transfer-info=@json:'{"spawn_delay_sec":2.5}' --progress=multi
|
|
1665
1661
|
ascli shares admin share list
|
|
1666
1662
|
ascli shares repository browse /
|
|
1667
1663
|
ascli shares repository delete /SHARES_UPLOAD/testfile.bin
|
|
@@ -1684,7 +1680,7 @@ ascli sync start --parameters=@json:'{"sessions":[{"name":"test","reset":true,"r
|
|
|
1684
1680
|
```
|
|
1685
1681
|
$ ascli -h
|
|
1686
1682
|
NAME
|
|
1687
|
-
ascli -- a command line tool for Aspera Applications (v4.
|
|
1683
|
+
ascli -- a command line tool for Aspera Applications (v4.3.0)
|
|
1688
1684
|
|
|
1689
1685
|
SYNOPSIS
|
|
1690
1686
|
ascli COMMANDS [OPTIONS] [ARGS]
|
|
@@ -1735,7 +1731,7 @@ OPTIONS: global
|
|
|
1735
1731
|
--once-only=ENUM process only new items (some commands): yes, no
|
|
1736
1732
|
|
|
1737
1733
|
COMMAND: config
|
|
1738
|
-
SUBCOMMANDS: gem_path genkey plugins flush_tokens list overview open echo id documentation wizard export_to_cli detect coffee ascp email_test smtp_settings proxy_check folder file check_update
|
|
1734
|
+
SUBCOMMANDS: gem_path genkey plugins flush_tokens list overview open echo id documentation wizard export_to_cli detect coffee ascp email_test smtp_settings proxy_check folder file check_update initdemo
|
|
1739
1735
|
OPTIONS:
|
|
1740
1736
|
--value=VALUE extended value for create, update, list filter
|
|
1741
1737
|
--property=VALUE name of property to set
|
|
@@ -1751,10 +1747,12 @@ OPTIONS:
|
|
|
1751
1747
|
--fpac=VALUE proxy auto configuration URL
|
|
1752
1748
|
-P, --presetVALUE load the named option preset from current config file
|
|
1753
1749
|
--default=VALUE set as default configuration for specified plugin
|
|
1754
|
-
--secret=VALUE
|
|
1755
|
-
--secrets=VALUE
|
|
1750
|
+
--secret=VALUE default secret
|
|
1751
|
+
--secrets=VALUE secret repository (Hash)
|
|
1756
1752
|
--sdk-url=VALUE URL to get SDK
|
|
1757
1753
|
--sdk-folder=VALUE SDK folder location
|
|
1754
|
+
--notif-to=VALUE email recipient for notification of transfers
|
|
1755
|
+
--notif-template=VALUE email ERB template for notification of transfers
|
|
1758
1756
|
--test-mode=ENUM skip user validation in wizard mode: yes, no
|
|
1759
1757
|
--version-check-days=VALUE period to check neew version in days (zero to disable)
|
|
1760
1758
|
--ts=VALUE override transfer spec values (Hash, use @json: prefix), current={"create_dir"=>true}
|
|
@@ -1829,7 +1827,7 @@ OPTIONS:
|
|
|
1829
1827
|
|
|
1830
1828
|
|
|
1831
1829
|
COMMAND: faspex5
|
|
1832
|
-
SUBCOMMANDS: node package auth_client
|
|
1830
|
+
SUBCOMMANDS: node package auth_client jobs
|
|
1833
1831
|
OPTIONS:
|
|
1834
1832
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
|
1835
1833
|
--username=VALUE username to log in
|
|
@@ -1862,7 +1860,8 @@ OPTIONS:
|
|
|
1862
1860
|
--delivery-info=VALUE package delivery information (extended value)
|
|
1863
1861
|
--source-name=VALUE create package from remote source (by name)
|
|
1864
1862
|
--storage=VALUE Faspex local storage definition
|
|
1865
|
-
--
|
|
1863
|
+
--recipient=VALUE use if recipient is a dropbox (with *)
|
|
1864
|
+
--box=ENUM package box: inbox, archive, sent
|
|
1866
1865
|
|
|
1867
1866
|
|
|
1868
1867
|
COMMAND: shares2
|
|
@@ -1918,25 +1917,24 @@ OPTIONS:
|
|
|
1918
1917
|
|
|
1919
1918
|
|
|
1920
1919
|
COMMAND: aoc
|
|
1921
|
-
SUBCOMMANDS:
|
|
1920
|
+
SUBCOMMANDS: reminder bearer_token organization tier_restrictions user workspace packages files gateway admin automation servers
|
|
1922
1921
|
OPTIONS:
|
|
1923
1922
|
--url=VALUE URL of application, e.g. https://org.asperafiles.com
|
|
1924
1923
|
--username=VALUE username to log in
|
|
1925
1924
|
--password=VALUE user's password
|
|
1926
|
-
--auth=ENUM type of
|
|
1925
|
+
--auth=ENUM OAuth type of authentication: body_userpass, header_userpass, web, jwt, url_token, ibm_apikey
|
|
1927
1926
|
--operation=ENUM client operation for transfers: push, pull
|
|
1928
|
-
--client-id=VALUE API client identifier in application
|
|
1929
|
-
--client-secret=VALUE API client passcode
|
|
1930
|
-
--redirect-uri=VALUE API client redirect URI
|
|
1931
|
-
--private-key=VALUE RSA private key PEM value
|
|
1927
|
+
--client-id=VALUE OAuth API client identifier in application
|
|
1928
|
+
--client-secret=VALUE OAuth API client passcode
|
|
1929
|
+
--redirect-uri=VALUE OAuth API client redirect URI
|
|
1930
|
+
--private-key=VALUE OAuth JWT RSA private key PEM value (prefix file path with @val:@file:)
|
|
1932
1931
|
--workspace=VALUE name of workspace
|
|
1933
1932
|
--name=VALUE resource name
|
|
1934
1933
|
--path=VALUE file or folder path
|
|
1935
1934
|
--link=VALUE public link to shared resource
|
|
1936
1935
|
--new-user-option=VALUE new user creation option
|
|
1937
1936
|
--from-folder=VALUE share to share source folder
|
|
1938
|
-
--scope=VALUE scope for AoC API calls
|
|
1939
|
-
--notify=VALUE notify users that file was received
|
|
1937
|
+
--scope=VALUE OAuth scope for AoC API calls
|
|
1940
1938
|
--bulk=ENUM bulk operation: yes, no
|
|
1941
1939
|
--default-ports=ENUM use standard FASP ports or get from node api: yes, no
|
|
1942
1940
|
|
|
@@ -2017,7 +2015,7 @@ For this, specify the option: `--use-generic-client=no`.
|
|
|
2017
2015
|
|
|
2018
2016
|
This will guide you through the steps to create.
|
|
2019
2017
|
|
|
2020
|
-
## <a name="
|
|
2018
|
+
## <a name="aocmanual"></a>Configuration: using manual setup
|
|
2021
2019
|
|
|
2022
2020
|
If you used the wizard (recommended): skip this section.
|
|
2023
2021
|
|
|
@@ -2183,7 +2181,7 @@ To activate default use of JWT authentication for `ascli` using the [option pres
|
|
|
2183
2181
|
|
|
2184
2182
|
* change auth method to JWT
|
|
2185
2183
|
* provide location of private key
|
|
2186
|
-
* provide username to login as (
|
|
2184
|
+
* provide username to login as (OAuth "subject")
|
|
2187
2185
|
|
|
2188
2186
|
Execute:
|
|
2189
2187
|
|
|
@@ -2281,10 +2279,10 @@ $ ascli aoc admin res user list --query='@json:{"q":"dummyuser"}' --fields=id,em
|
|
|
2281
2279
|
: 98398 : dummyuser1@example.com :
|
|
2282
2280
|
: 98399 : dummyuser2@example.com :
|
|
2283
2281
|
:.......:........................:
|
|
2284
|
-
$ thelist=$(
|
|
2282
|
+
$ thelist=$(ascli aoc admin res user list --query='@json:{"q":"dummyuser"}' --fields=id --format=json --display=data|jq -cr 'map(.id)')
|
|
2285
2283
|
$ echo $thelist
|
|
2286
|
-
|
|
2287
|
-
$ ascli aoc admin res user --bulk=yes --id=@json:
|
|
2284
|
+
["113501","354061"]
|
|
2285
|
+
$ ascli aoc admin res user --bulk=yes --id=@json:"$thelist" delete
|
|
2288
2286
|
:.......:.........:
|
|
2289
2287
|
: id : status :
|
|
2290
2288
|
:.......:.........:
|
|
@@ -2293,6 +2291,14 @@ $ ascli aoc admin res user --bulk=yes --id=@json:[$thelist] delete
|
|
|
2293
2291
|
:.......:.........:
|
|
2294
2292
|
```
|
|
2295
2293
|
|
|
2294
|
+
* <a name="deactuser"></a>Find deactivated users since more than 2 years
|
|
2295
|
+
|
|
2296
|
+
```
|
|
2297
|
+
ascli aoc admin res user list --query=@ruby:'{"deactivated"=>true,"q"=>"last_login_at:<#{(DateTime.now.to_time.utc-2*365*86400).iso8601}"}'
|
|
2298
|
+
```
|
|
2299
|
+
|
|
2300
|
+
To delete them use the same method as before
|
|
2301
|
+
|
|
2296
2302
|
* Display current user's workspaces
|
|
2297
2303
|
|
|
2298
2304
|
```
|
|
@@ -2534,10 +2540,10 @@ $ ascli aoc packages recv --id=ALL --once-only=yes --lock-port=12345
|
|
|
2534
2540
|
* `--once-only=yes` keeps memory of any downloaded package in persistency files located in the configuration folder.
|
|
2535
2541
|
* `--lock-port=12345` ensures that only one instance is started at the same time, to avoid collisions
|
|
2536
2542
|
|
|
2537
|
-
Typically, one would regularly execute this command on a regular basis, using the method
|
|
2543
|
+
Typically, one would regularly execute this command on a regular basis, using the method of your choice:
|
|
2538
2544
|
|
|
2539
|
-
* Windows scheduler
|
|
2540
|
-
* cron
|
|
2545
|
+
* Windows: [Task Scheduler](https://docs.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page)
|
|
2546
|
+
* Linux/Unix: [cron](https://www.man7.org/linux/man-pages/man5/crontab.5.html)
|
|
2541
2547
|
* etc...
|
|
2542
2548
|
|
|
2543
2549
|
## Download Files
|
|
@@ -2594,19 +2600,40 @@ The activity app can be queried with:
|
|
|
2594
2600
|
$ ascli aoc admin analytics transfers
|
|
2595
2601
|
```
|
|
2596
2602
|
|
|
2597
|
-
It can also support filters and send notification
|
|
2603
|
+
It can also support filters and send notification using option `notif_to`. a template is defined using option `notif_template` :
|
|
2604
|
+
|
|
2605
|
+
`mytemplate.erb`:
|
|
2598
2606
|
|
|
2599
2607
|
```
|
|
2600
|
-
|
|
2608
|
+
From: <%=from_name%> <<%=from_email%>>
|
|
2609
|
+
To: <<%=ev['user_email']%>>
|
|
2610
|
+
Subject: <%=ev['files_completed']%> files received
|
|
2611
|
+
|
|
2612
|
+
Dear <%=ev[:user_email.to_s]%>,
|
|
2613
|
+
We received <%=ev['files_completed']%> files for a total of <%=ev['transferred_bytes']%> bytes, starting with file:
|
|
2614
|
+
<%=ev['content']%>
|
|
2615
|
+
|
|
2616
|
+
Thank you.
|
|
2617
|
+
```
|
|
2618
|
+
The environment provided contains the following additional variable:
|
|
2619
|
+
|
|
2620
|
+
* ev : all details on the transfer event
|
|
2621
|
+
|
|
2622
|
+
Example:
|
|
2623
|
+
|
|
2624
|
+
```
|
|
2625
|
+
$ ascli aoc admin analytics transfers --once-only=yes --lock-port=12345 \
|
|
2601
2626
|
--query=@json:'{"status":"completed","direction":"receive"}' \
|
|
2602
|
-
--
|
|
2627
|
+
--notif-to=active --notif-template=@file:mytemplate.erb
|
|
2603
2628
|
```
|
|
2604
2629
|
|
|
2630
|
+
Options:
|
|
2631
|
+
|
|
2605
2632
|
* `once_only` keep track of last date it was called, so next call will get only new events
|
|
2606
2633
|
* `query` filter (on API call)
|
|
2607
2634
|
* `notify` send an email as specified by template, this could be places in a file with the `@file` modifier.
|
|
2608
2635
|
|
|
2609
|
-
Note this must not be executed in less than 5 minutes because the analytics interface accepts only a period of time between 5 minutes and 6 months.
|
|
2636
|
+
Note this must not be executed in less than 5 minutes because the analytics interface accepts only a period of time between 5 minutes and 6 months. The period is [date of previous execution]..[now].
|
|
2610
2637
|
|
|
2611
2638
|
## Using specific transfer ports
|
|
2612
2639
|
|
|
@@ -2667,7 +2694,37 @@ $ ascli ats api_key create
|
|
|
2667
2694
|
+--------+----------------------------------------------+
|
|
2668
2695
|
$ ascli config id my_ibm_ats update --ats-key=ats_XXXXXXXXXXXXXXXXXXXXXXXX --ats-secret=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
|
|
2669
2696
|
```
|
|
2697
|
+
## Cross Organization transfers
|
|
2698
|
+
|
|
2699
|
+
It is possible to transfer files directly between organizations without having to first download locally and then upload...
|
|
2700
|
+
|
|
2701
|
+
Although optional, the creation of [option preset](#lprt) is recommended to avoid placing all parameters in the command line.
|
|
2702
|
+
|
|
2703
|
+
Procedure to send a file from org1 to org2:
|
|
2704
|
+
|
|
2705
|
+
* Get access to Organization 1 and create a [option preset](#lprt): e.g. `org1`, for instance, use the [Wizard](#aocwizard)
|
|
2706
|
+
* Check that access works and locate the source file e.g. `mysourcefile`, e.g. using command `files browse`
|
|
2707
|
+
* Get access to Organization 2 and create a [option preset](#lprt): e.g. `org2`
|
|
2708
|
+
* Check that access works and locate the destination folder `mydestfolder`
|
|
2709
|
+
* execute the following:
|
|
2710
|
+
|
|
2711
|
+
```
|
|
2712
|
+
$ ascli -Porg1 aoc files node_info /mydestfolder --format=json --display=data | ascli -Porg2 aoc files upload mysourcefile --transfer=node --transfer-info=@json:@stdin:
|
|
2713
|
+
```
|
|
2714
|
+
|
|
2715
|
+
Explanation:
|
|
2670
2716
|
|
|
2717
|
+
* `-Porg1 aoc` use Aspera on Cloud plugin and load credentials for `org1`
|
|
2718
|
+
* `files node_info /mydestfolder` generate transfer information including node api credential and root id, suitable for the next command
|
|
2719
|
+
* `--format=json` format the output in JSON (instead of default text table)
|
|
2720
|
+
* `--display=data` display only the result, and remove other information, such as workspace name
|
|
2721
|
+
* `|` the standard output of the first command is fed into the second one
|
|
2722
|
+
* `-Porg2 aoc` use Aspera on Cloud plugin and load credentials for `org2`
|
|
2723
|
+
* `files upload mysourcefile` upload the file named `mysourcefile` (located in `org1`)
|
|
2724
|
+
* `--transfer=node` use transfer agent type `node` instead of default `direct`
|
|
2725
|
+
* `--transfer-info=@json:@stdin:` provide `node` transfer agent information, i.e. node API credentials, those are expected in JSON format and read from standard input
|
|
2726
|
+
|
|
2727
|
+
Note that when using a POSIX shell, another possibility to write `cmd1 | cmd2 --transfer-info=@json:stdin:` is `cmd2 --transfer-info=@json:$(cmd1)` instead of ``
|
|
2671
2728
|
## Examples
|
|
2672
2729
|
|
|
2673
2730
|
Example: create access key on softlayer:
|
|
@@ -2757,7 +2814,7 @@ This can also be set as default using a preset
|
|
|
2757
2814
|
One can test the "server" application using the well known demo server:
|
|
2758
2815
|
|
|
2759
2816
|
```
|
|
2760
|
-
$ ascli config id aspera_demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=
|
|
2817
|
+
$ ascli config id aspera_demo_server update --url=ssh://demo.asperasoft.com:33001 --username=asperaweb --password=_demo_pass_
|
|
2761
2818
|
$ ascli config id default set server aspera_demo_server
|
|
2762
2819
|
$ ascli server browse /aspera-test-dir-large
|
|
2763
2820
|
$ ascli server download /aspera-test-dir-large/200MB
|
|
@@ -2853,16 +2910,19 @@ to download files.
|
|
|
2853
2910
|
$ ascli node access_key create --value=@json:'{"id":"eudemo-sedemo","secret":"mystrongsecret","storage":{"type":"local","path":"/data/asperafiles"}}'
|
|
2854
2911
|
```
|
|
2855
2912
|
|
|
2856
|
-
# Plugin: IBM Aspera
|
|
2913
|
+
# Plugin: IBM Aspera Faspex5
|
|
2857
2914
|
|
|
2858
|
-
|
|
2915
|
+
3 authentication methods are supported:
|
|
2916
|
+
|
|
2917
|
+
* jwt
|
|
2918
|
+
* web
|
|
2919
|
+
* boot
|
|
2859
2920
|
|
|
2860
|
-
|
|
2861
|
-
* for full details on Faspex API, refer to: [Reference on Developer Site](https://www.ibm.com/products/aspera/developer)
|
|
2921
|
+
For JWT, create an API client in Faspex with jwt support, and use: `--auth=jwt`.
|
|
2862
2922
|
|
|
2863
|
-
|
|
2923
|
+
For web method, create an API client in Faspex, and use: --auth=web
|
|
2864
2924
|
|
|
2865
|
-
|
|
2925
|
+
For boot method: (will be removed in future)
|
|
2866
2926
|
|
|
2867
2927
|
* open a browser
|
|
2868
2928
|
* start developer mode
|
|
@@ -2875,30 +2935,74 @@ Use it as password and use `--auth=boot`.
|
|
|
2875
2935
|
$ ascli conf id f5boot update --url=https://localhost/aspera/faspex --auth=boot --password=ABC.DEF.GHI...
|
|
2876
2936
|
```
|
|
2877
2937
|
|
|
2878
|
-
|
|
2938
|
+
Ready to use Faspex5 with CLI.
|
|
2939
|
+
|
|
2940
|
+
# Plugin: IBM Aspera Faspex (4.x)
|
|
2941
|
+
|
|
2942
|
+
Notes:
|
|
2943
|
+
|
|
2944
|
+
* The command "v4" requires the use of APIv4, refer to the Faspex Admin manual on how to activate.
|
|
2945
|
+
* For full details on Faspex API, refer to: [Reference on Developer Site](https://developer.ibm.com/apis/catalog/?search=faspex)
|
|
2946
|
+
|
|
2947
|
+
## Listing Packages
|
|
2948
|
+
|
|
2949
|
+
Command: `faspex package list`
|
|
2950
|
+
|
|
2951
|
+
### Option `box`
|
|
2952
|
+
|
|
2953
|
+
By default it looks in box `inbox`, but the following boxes are also supported: `archive` and `sent`, selected with option `box`.
|
|
2954
|
+
|
|
2955
|
+
### Option `recipient`
|
|
2956
|
+
|
|
2957
|
+
A user can receive a package because the recipient is:
|
|
2958
|
+
|
|
2959
|
+
* the user himself (default)
|
|
2960
|
+
* the user is part of a dropbox or a workgroup (select with option `recipient` with value `*<name of WG or DB>`
|
|
2961
|
+
|
|
2962
|
+
### Option `query`
|
|
2963
|
+
|
|
2964
|
+
As inboxes may be large, it is possible to use the following query parameters:
|
|
2965
|
+
|
|
2966
|
+
* `count` : (native) number items in one API call (default=0, equivalent to 10)
|
|
2967
|
+
* `page` : (native) id of page in call (default=0)
|
|
2968
|
+
* `startIndex` : (native) index of item to start, default=0, oldest index=0
|
|
2969
|
+
* `max` : maximum number of items
|
|
2970
|
+
* `pmax` : maximum number of pages
|
|
2971
|
+
|
|
2972
|
+
(SQL query is `LIMIT <startIndex>, <count>`)
|
|
2973
|
+
|
|
2974
|
+
The API is listed in [Faspex 4 API Reference](https://developer.ibm.com/apis/catalog/?search=faspex) under "Services (API v.3)".
|
|
2975
|
+
|
|
2976
|
+
If no parameter `max` or `pmax` is provided, then all packages will be listed in the inbox, which result in paged API calls (using parameter: `count` and `page`). By default page is `0` (`10`), it can be increased to have less calls.
|
|
2977
|
+
|
|
2978
|
+
### Example
|
|
2879
2979
|
|
|
2880
2980
|
```
|
|
2881
|
-
$
|
|
2882
|
-
$ ascli faspex5 -Pf5boot auth_client create --value=@json:'{"name":"hello","client_type":"public","redirect_uris":["https://localhost:12345"],"allow_jwt_grant":true,"public_key":"'$jsonk'"}'
|
|
2981
|
+
$ ascli faspex package list --box=inbox --recipient='*my_dropbox' --query=@json:'{"max":20,"pmax":2,"count":20}'
|
|
2883
2982
|
```
|
|
2884
2983
|
|
|
2885
|
-
|
|
2984
|
+
List a maximum of 20 items grouped by pages of 20, with maximum 2 pages in received box (inbox) when received in dropbox `*my_dropbox`.
|
|
2985
|
+
|
|
2986
|
+
## Receiving a Package
|
|
2987
|
+
|
|
2988
|
+
The command is `package recv`, possible methods are:
|
|
2989
|
+
|
|
2990
|
+
* provide a package id with option `id`
|
|
2991
|
+
* provide a public link with option `link`
|
|
2992
|
+
* provide a `faspe:` URI with option `link`
|
|
2886
2993
|
|
|
2887
2994
|
```
|
|
2888
|
-
$
|
|
2889
|
-
$ ascli
|
|
2995
|
+
$ ascli faspex package recv --id=12345
|
|
2996
|
+
$ ascli faspex package recv --link=faspe://...
|
|
2890
2997
|
```
|
|
2891
2998
|
|
|
2892
|
-
|
|
2999
|
+
If the package is in a specific dropbox, add option `recipient` for both the `list` and `recv` commands.
|
|
2893
3000
|
|
|
2894
3001
|
```
|
|
2895
|
-
$ ascli
|
|
2896
|
-
|
|
2897
|
-
```
|
|
2898
|
-
|
|
2899
|
-
Ready to use Faspex5 with CLI.
|
|
3002
|
+
$ ascli faspex package list --recipient='*thedropboxname'
|
|
3003
|
+
```
|
|
2900
3004
|
|
|
2901
|
-
|
|
3005
|
+
if `id` is set to `ALL`, then all packages are downloaded, and if option `once_only`is used, then a persistency file is created to keep track of already downloaded packages.
|
|
2902
3006
|
|
|
2903
3007
|
## Sending a Package
|
|
2904
3008
|
|
|
@@ -2917,7 +3021,19 @@ Additional optional parameters in `delivery_info`:
|
|
|
2917
3021
|
* Package Note: : `"note":"note this and that"`
|
|
2918
3022
|
* Package Metadata: `"metadata":{"Meta1":"Val1","Meta2":"Val2"}`
|
|
2919
3023
|
|
|
2920
|
-
##
|
|
3024
|
+
## Email notification on transfer
|
|
3025
|
+
|
|
3026
|
+
Like for any transfer, a notification can be sent by email using parameters: `notif_to` and `notif_template` .
|
|
3027
|
+
|
|
3028
|
+
Example:
|
|
3029
|
+
|
|
3030
|
+
```
|
|
3031
|
+
$ ascli faspex package send --delivery-info=@json:'{"title":"test pkg 1","recipients":["aspera.user1@gmail.com"]}' ~/Documents/Samples/200KB.1 --notif-to=aspera.user1@gmail.com --notif-template=@ruby:'%Q{From: <%=from_name%> <<%=from_email%>>\nTo: <<%=to%>>\nSubject: Package sent: <%=ts["tags"]["aspera"]["faspex"]["metadata"]["_pkg_name"]%> files received\n\nTo user: <%=ts["tags"]["aspera"]["faspex"]["recipients"].first["email"]%>}'
|
|
3032
|
+
```
|
|
3033
|
+
|
|
3034
|
+
In this example the notification template is directly provided on command line. Package information placed in the message are directly taken from the tags in transfer spec. The template can be placed in a file using modifier: `@file:`
|
|
3035
|
+
|
|
3036
|
+
## Operation on dropboxes
|
|
2921
3037
|
|
|
2922
3038
|
Example:
|
|
2923
3039
|
|
|
@@ -2927,7 +3043,7 @@ $ ascli faspex v4 dropbox list
|
|
|
2927
3043
|
$ ascli faspex v4 dropbox delete --id=36
|
|
2928
3044
|
```
|
|
2929
3045
|
|
|
2930
|
-
##
|
|
3046
|
+
## Remote sources
|
|
2931
3047
|
|
|
2932
3048
|
Faspex lacks an API to list the contents of a remote source (available in web UI). To workaround this,
|
|
2933
3049
|
the node API is used, for this it is required to add a section ":storage" that links
|
|
@@ -2978,29 +3094,38 @@ $ for p in 1 2 3;do ascli shares2 admin users list --value=@json:'{"page":'$p'}'
|
|
|
2978
3094
|
# Plugin: IBM Cloud Object Storage
|
|
2979
3095
|
|
|
2980
3096
|
The IBM Cloud Object Storage provides the possibility to execute transfers using FASP.
|
|
2981
|
-
It uses the same transfer service as Aspera on Cloud.
|
|
2982
|
-
|
|
3097
|
+
It uses the same transfer service as Aspera on Cloud, called Aspera Transfer Service (ATS).
|
|
3098
|
+
Available ATS regions: [https://status.aspera.io](https://status.aspera.io)
|
|
2983
3099
|
|
|
2984
|
-
|
|
3100
|
+
There are two possibilities to provide credentials. If you already have the endpoint, apikey and CRN, use the forst method. If you dont have credentials but have access to the IBM Cloud console, then use the second method.
|
|
3101
|
+
|
|
3102
|
+
## Using endpoint, apikey and Ressource Instance ID (CRN)
|
|
3103
|
+
|
|
3104
|
+
If you have those parameters already, then following options shall be provided:
|
|
2985
3105
|
|
|
2986
3106
|
* `bucket` bucket name
|
|
2987
3107
|
* `endpoint` storage endpoint url, e.g. https://s3.hkg02.cloud-object-storage.appdomain.cloud
|
|
2988
3108
|
* `apikey` API Key
|
|
2989
3109
|
* `crn` resource instance id
|
|
2990
3110
|
|
|
2991
|
-
|
|
3111
|
+
For example, let us create a default configuration:
|
|
2992
3112
|
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
3113
|
+
```
|
|
3114
|
+
$ ascli conf id mycos update --bucket=mybucket --endpoint=https://s3.us-east.cloud-object-storage.appdomain.cloud --apikey=abcdefgh --crn=crn:v1:bluemix:public:iam-identity::a/xxxxxxx
|
|
3115
|
+
$ ascli conf id default set cos mycos
|
|
3116
|
+
```
|
|
3117
|
+
|
|
3118
|
+
Then, jump to the transfer example.
|
|
2996
3119
|
|
|
2997
|
-
|
|
3120
|
+
## Using service credential file
|
|
3121
|
+
|
|
3122
|
+
If you are the COS administrator and dont have yet the credential: Service credentials are directly created using the IBM cloud web ui. Navigate to:
|
|
2998
3123
|
|
|
2999
3124
|
Navigation Menu → Resource List → Storage → Cloud Object Storage → Service Credentials → <select or create credentials> → view credentials → copy
|
|
3000
3125
|
|
|
3001
3126
|
Then save the copied value to a file, e.g. : `$HOME/cos_service_creds.json`
|
|
3002
3127
|
|
|
3003
|
-
or using the CLI:
|
|
3128
|
+
or using the IBM Cloud CLI:
|
|
3004
3129
|
|
|
3005
3130
|
```
|
|
3006
3131
|
$ ibmcloud resource service-keys
|
|
@@ -3031,37 +3156,42 @@ The field `resource_instance_id` is for option `crn`
|
|
|
3031
3156
|
|
|
3032
3157
|
The field `apikey` is for option `apikey`
|
|
3033
3158
|
|
|
3034
|
-
|
|
3159
|
+
(If needed: endpoints for regions can be found by querying the `endpoints` URL.)
|
|
3160
|
+
|
|
3161
|
+
The required options for this method are:
|
|
3162
|
+
|
|
3163
|
+
* `bucket` bucket name
|
|
3164
|
+
* `region` bucket region, e.g. eu-de
|
|
3165
|
+
* `service_credentials` see below
|
|
3035
3166
|
|
|
3036
|
-
For
|
|
3167
|
+
For example, let us create a default configuration:
|
|
3037
3168
|
|
|
3038
3169
|
```
|
|
3039
3170
|
$ ascli conf id mycos update --bucket=laurent --service-credentials=@val:@json:@file:~/service_creds.json --region=us-south
|
|
3040
3171
|
$ ascli conf id default set cos mycos
|
|
3041
3172
|
```
|
|
3042
3173
|
|
|
3043
|
-
|
|
3174
|
+
## Operations, transfers
|
|
3044
3175
|
|
|
3045
|
-
|
|
3046
|
-
$ ascli conf id mycos update --bucket=mybucket --endpoint=https://s3.us-east.cloud-object-storage.appdomain.cloud --apikey=abcdefgh --crn=crn:v1:bluemix:public:iam-identity::a/xxxxxxx
|
|
3047
|
-
$ ascli conf id default set cos mycos
|
|
3048
|
-
```
|
|
3176
|
+
Let's assume you created a default configuration from once of the two previous steps (else specify the access options on command lines).
|
|
3049
3177
|
|
|
3050
|
-
|
|
3178
|
+
A subset of `node` plugin operations are supported, basically node API:
|
|
3051
3179
|
|
|
3052
3180
|
```
|
|
3053
|
-
$ ascli cos node
|
|
3054
|
-
$ ascli cos node upload
|
|
3181
|
+
$ ascli cos node info
|
|
3182
|
+
$ ascli cos node upload 'faux:///sample1G?1g'
|
|
3055
3183
|
```
|
|
3056
3184
|
|
|
3185
|
+
Note: we generate a dummy file `sample1G` if size 2GB using the `faux` PVCL (man ascp), but you can of course send a real file by specifying a real file instead.
|
|
3186
|
+
|
|
3057
3187
|
# Plugin: IBM Aspera Sync
|
|
3058
3188
|
|
|
3059
|
-
A basic plugin to start an "async" using `ascli`.
|
|
3060
|
-
to start from ma configuration file, using `ascli` standard options.
|
|
3189
|
+
A basic plugin to start an "async" using `ascli`.
|
|
3190
|
+
The main advantage is the possibility to start from ma configuration file, using `ascli` standard options.
|
|
3061
3191
|
|
|
3062
3192
|
# Plugin: Preview
|
|
3063
3193
|
|
|
3064
|
-
The `preview` generates "previews" of graphical files, i.e. thumbnails (office, images, video) and video previews on
|
|
3194
|
+
The `preview` generates "previews" of graphical files, i.e. thumbnails (office, images, video) and video previews on storage for use primarily in the Aspera on Cloud application.
|
|
3065
3195
|
This is based on the "node API" of Aspera HSTS when using Access Keys only inside it's "storage root".
|
|
3066
3196
|
Several parameters can be used to tune several aspects:
|
|
3067
3197
|
|
|
@@ -3190,9 +3320,10 @@ $ ascli config id previewconf update --url=https://localhost:9092 --username=my_
|
|
|
3190
3320
|
$ ascli config id default set preview previewconf
|
|
3191
3321
|
```
|
|
3192
3322
|
|
|
3193
|
-
Here we assume that Office file generation is disabled, else remove
|
|
3323
|
+
Here we assume that Office file generation is disabled, else remove this option.
|
|
3324
|
+
`lock_port` prevents concurrent execution of generation when using a scheduler.
|
|
3194
3325
|
|
|
3195
|
-
|
|
3326
|
+
One can check if the access key is well configured using:
|
|
3196
3327
|
|
|
3197
3328
|
```
|
|
3198
3329
|
$ ascli -Ppreviewconf node browse /
|
|
@@ -3278,6 +3409,14 @@ $ ascli preview scan --skip-folders=@json:'["/not_here"]'
|
|
|
3278
3409
|
|
|
3279
3410
|
The option `folder_reset_cache` forces the node service to refresh folder contents using various methods.
|
|
3280
3411
|
|
|
3412
|
+
When scanning the option `value` has the same behaviour as for the `node find` command.
|
|
3413
|
+
|
|
3414
|
+
For instance to filter out files beginning with `._` do:
|
|
3415
|
+
|
|
3416
|
+
```
|
|
3417
|
+
... --value='exec:!f["name"].start_with?("._") or f["name"].eql?(".DS_Store")'
|
|
3418
|
+
```
|
|
3419
|
+
|
|
3281
3420
|
## Preview File types
|
|
3282
3421
|
|
|
3283
3422
|
Two types of preview can be generated:
|
|
@@ -3326,14 +3465,14 @@ Aspera CLI can send email, for that setup SMTP configuration. This is done with
|
|
|
3326
3465
|
The `smtp` option is a hash table (extended value) with the following fields:
|
|
3327
3466
|
<table>
|
|
3328
3467
|
<tr><th>field</th><th>default</th><th>example</th><th>description</th></tr>
|
|
3329
|
-
<tr><td
|
|
3330
|
-
<tr><td
|
|
3331
|
-
<tr><td
|
|
3332
|
-
<tr><td
|
|
3333
|
-
<tr><td
|
|
3334
|
-
<tr><td
|
|
3335
|
-
<tr><td
|
|
3336
|
-
<tr><td
|
|
3468
|
+
<tr><td>`server`</td><td>-</td><td>smtp.gmail.com</td><td>SMTP server address</td></tr>
|
|
3469
|
+
<tr><td>`tls`</td><td>true</td><td>false</td><td>use of TLS</td></tr>
|
|
3470
|
+
<tr><td>`port`</td><td>587 for tls<br/>25 else</td><td>587</td><td>port for service</td></tr>
|
|
3471
|
+
<tr><td>`domain`</td><td>domain of server</td><td>gmail.com</td><td>email domain of user</td></tr>
|
|
3472
|
+
<tr><td>`username`</td><td>-</td><td>john@example.com</td><td>user to authenticate on SMTP server, leave empty for open auth.</td></tr>
|
|
3473
|
+
<tr><td>`password`</td><td>-</td><td>MyP@ssword</td><td>password for above username</td></tr>
|
|
3474
|
+
<tr><td>`from_email`</td><td>username if defined</td><td>laurent.martin.l@gmail.com</td><td>address used if received replies</td></tr>
|
|
3475
|
+
<tr><td>`from_name`</td><td>same as email</td><td>John Wayne</td><td>display name of sender</td></tr>
|
|
3337
3476
|
</table>
|
|
3338
3477
|
|
|
3339
3478
|
## Example of configuration:
|
|
@@ -3363,13 +3502,52 @@ $ ascli config id cli_default set smtp @val:@preset:smtp_google
|
|
|
3363
3502
|
$ ascli config id default set config cli_default
|
|
3364
3503
|
```
|
|
3365
3504
|
|
|
3505
|
+
## Email templates
|
|
3506
|
+
|
|
3507
|
+
Sent emails are built using a template that uses the [ERB](https://www.tutorialspoint.com/ruby/eruby.htm) syntax.
|
|
3508
|
+
|
|
3509
|
+
The template is the full SMTP message, including headers.
|
|
3510
|
+
|
|
3511
|
+
The following variables are defined by default:
|
|
3512
|
+
|
|
3513
|
+
* from_name
|
|
3514
|
+
* from_email
|
|
3515
|
+
* to
|
|
3516
|
+
|
|
3517
|
+
Other variables are defined depending on context.
|
|
3518
|
+
|
|
3366
3519
|
## Test
|
|
3367
3520
|
|
|
3368
3521
|
Check settings with `smtp_settings` command. Send test email with `email_test`.
|
|
3369
3522
|
|
|
3370
3523
|
```
|
|
3371
3524
|
$ ascli config --smtp=@preset:smtp_google smtp
|
|
3372
|
-
$ ascli config --smtp=@preset:smtp_google email sample.dest@example.com
|
|
3525
|
+
$ ascli config --smtp=@preset:smtp_google email --notif-to=sample.dest@example.com
|
|
3526
|
+
```
|
|
3527
|
+
|
|
3528
|
+
## Notifications for transfer status
|
|
3529
|
+
|
|
3530
|
+
An e-mail notification can be sent upon transfer success and failure (one email per transfer job, one job being possibly multi session, and possibly after retry).
|
|
3531
|
+
|
|
3532
|
+
To activate, use option `notif_to`.
|
|
3533
|
+
|
|
3534
|
+
A default e-mail template is used, but it can be overriden with option `notif_template`.
|
|
3535
|
+
|
|
3536
|
+
The environment provided contains the following additional variables:
|
|
3537
|
+
|
|
3538
|
+
* subject
|
|
3539
|
+
* body
|
|
3540
|
+
* global_transfer_status
|
|
3541
|
+
* ts
|
|
3542
|
+
|
|
3543
|
+
Example of template:
|
|
3544
|
+
|
|
3545
|
+
```
|
|
3546
|
+
From: <%=from_name%> <<%=from_email%>>
|
|
3547
|
+
To: <<%=to%>>
|
|
3548
|
+
Subject: <%=subject%>
|
|
3549
|
+
|
|
3550
|
+
Transfer is: <%=global_transfer_status%>
|
|
3373
3551
|
```
|
|
3374
3552
|
|
|
3375
3553
|
# Tool: `asession`
|
|
@@ -3415,7 +3593,7 @@ Note that in addition, many "EX_" [_transfer-spec_](#transferspec) parameters ar
|
|
|
3415
3593
|
## Simple session
|
|
3416
3594
|
|
|
3417
3595
|
```
|
|
3418
|
-
MY_TSPEC='{"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"
|
|
3596
|
+
MY_TSPEC='{"remote_host":"demo.asperasoft.com","remote_user":"asperaweb","ssh_port":33001,"remote_password":"_demo_pass_","direction":"receive","destination_root":"./test.dir","paths":[{"source":"/aspera-test-dir-tiny/200KB.1"}],"resume_level":"none"}'
|
|
3419
3597
|
|
|
3420
3598
|
echo "${MY_TSPEC}"|asession
|
|
3421
3599
|
```
|
|
@@ -3428,7 +3606,7 @@ This is particularly useful for a persistent session ( with the [_transfer-spec_
|
|
|
3428
3606
|
|
|
3429
3607
|
```
|
|
3430
3608
|
$ asession
|
|
3431
|
-
{"remote_host":"demo.asperasoft.com","ssh_port":33001,"remote_user":"asperaweb","remote_password":"
|
|
3609
|
+
{"remote_host":"demo.asperasoft.com","ssh_port":33001,"remote_user":"asperaweb","remote_password":"_demo_pass_","direction":"receive","destination_root":".","keepalive":true,"resume_level":"none"}
|
|
3432
3610
|
{"type":"START","source":"/aspera-test-dir-tiny/200KB.2"}
|
|
3433
3611
|
{"type":"DONE"}
|
|
3434
3612
|
```
|
|
@@ -3500,7 +3678,7 @@ Interesting ascp features are found in its arguments: (see ascp manual):
|
|
|
3500
3678
|
Note that:
|
|
3501
3679
|
|
|
3502
3680
|
* `ascli` takes transfer parameters exclusively as a transfer_spec, with `--ts` parameter.
|
|
3503
|
-
* not all native ascp arguments are available as standard transfer_spec parameters
|
|
3681
|
+
* most, but not all native ascp arguments are available as standard transfer_spec parameters
|
|
3504
3682
|
* native ascp arguments can be provided with the [_transfer-spec_](#transferspec) parameter: EX_ascp_args (array), only for the "local" transfer agent (not connect or node)
|
|
3505
3683
|
|
|
3506
3684
|
### server side and configuration
|
|
@@ -3597,7 +3775,42 @@ So, it evolved into `ascli`:
|
|
|
3597
3775
|
|
|
3598
3776
|
# Changes (Release notes)
|
|
3599
3777
|
|
|
3600
|
-
* 4.
|
|
3778
|
+
* 4.3.0
|
|
3779
|
+
|
|
3780
|
+
* new: parameter `multi_incr_udp` for option `transfer_info`: control if UDP port is incremented when multi-session is used on `direct` transfer agent.
|
|
3781
|
+
* new: command `aoc files node_info` to get node information for a given folder in the Files application of AoC. Allows cross-org or cross-workspace transfers.
|
|
3782
|
+
|
|
3783
|
+
* 4.2.2
|
|
3784
|
+
|
|
3785
|
+
* new: `faspex package list` retrieves the whole list, not just first page
|
|
3786
|
+
* new: support web based auth to aoc and faspex 5 using HTTPS, new dependency on gem `webrick`
|
|
3787
|
+
* new: the error "Remote host is not who we expected" displays a special remediation message
|
|
3788
|
+
* new: `conf ascp spec` displays supported transfer spec
|
|
3789
|
+
* new: options `notif_to` and `notif_template` to send email notifications on transfer (and other events)
|
|
3790
|
+
* fix: space character in `faspe:` url are precent encoded if needed
|
|
3791
|
+
* fix: `preview scan`: if file_id is unknown, ignore and continue scan
|
|
3792
|
+
* change: for commands that potentially execute several transfers (`package recv --id=ALL`), if one transfer fails then `ascli` exits with code 1 (instead of zero=success)
|
|
3793
|
+
* change: (break) option `notify` or `aoc` replaced with `notif_to` and `notif_template`
|
|
3794
|
+
|
|
3795
|
+
* 4.2.1
|
|
3796
|
+
|
|
3797
|
+
* new: command `faspex package recv` supports link of type: `faspe:`
|
|
3798
|
+
* new: command `faspex package recv` supports option `recipient` to specify dropbox with leading `*`
|
|
3799
|
+
|
|
3800
|
+
* 4.2.0
|
|
3801
|
+
|
|
3802
|
+
* new: command `aoc remind` to receive organization membership by email
|
|
3803
|
+
* new: in `preview` option `value` to filter out on file name
|
|
3804
|
+
* new: `initdemo` to initialize for demo server
|
|
3805
|
+
* new: `direct` transfer agent options: `spawn_timeout_sec` and `spawn_delay_sec`
|
|
3806
|
+
* fix: on Windows `conf ascp use` expects ascp.exe
|
|
3807
|
+
* fix: (break) multi_session_threshold is Integer, not String
|
|
3808
|
+
* fix: `conf ascp install` renames sdk folder if it already exists (leftover shared lib may make fail)
|
|
3809
|
+
* fix: removed replace_illegal_chars from default aspera.conf causing "Error creating illegal char conversion table"
|
|
3810
|
+
* change: (break) `aoc apiinfo` is removed, use `aoc servers` to provide the list of cloud systems
|
|
3811
|
+
* change: (break) parameters for resume in `transfer-info` for `direct` are now in sub-key `"resume"`
|
|
3812
|
+
|
|
3813
|
+
* 4.1.0
|
|
3601
3814
|
|
|
3602
3815
|
* fix: remove keys from transfer spec and command line when not needed
|
|
3603
3816
|
* fix: default to create_dir:true so that sending single file to a folder does not rename file if folder does not exist
|
|
@@ -3968,11 +4181,15 @@ Breaking change:
|
|
|
3968
4181
|
|
|
3969
4182
|
* Breaking change: "files" application renamed to "aspera" (for "Aspera on Cloud"). "repository" renamed to "files". Default is automatically reset, e.g. in config files and change key "files" to "aspera" in [option preset](#lprt) "default".
|
|
3970
4183
|
|
|
3971
|
-
# BUGS
|
|
4184
|
+
# BUGS, FEATURES, CONTRIBUTION
|
|
4185
|
+
|
|
4186
|
+
For issues or feature requests use the Github repository and issues.
|
|
4187
|
+
|
|
4188
|
+
You can also contribute to this open source project.
|
|
3972
4189
|
|
|
3973
|
-
|
|
4190
|
+
One can also create one's own command nplugin.
|
|
3974
4191
|
|
|
3975
|
-
##
|
|
4192
|
+
## Only one value for any option
|
|
3976
4193
|
|
|
3977
4194
|
Some commands and sub commands may ask for the same option name.
|
|
3978
4195
|
Currently, since option definition is position independant (last one wins), it is not possible
|
|
@@ -3986,7 +4203,8 @@ This happens typically for the `node` sub command, e.g. identify the node by nam
|
|
|
3986
4203
|
|
|
3987
4204
|
## ED255519 key not supported
|
|
3988
4205
|
|
|
3989
|
-
|
|
4206
|
+
ED25519 keys are deactivated since version 0.9.24 so this type of key will just be ignored.
|
|
4207
|
+
|
|
3990
4208
|
Without this deactivation, if such key was present the following error was generated:
|
|
3991
4209
|
|
|
3992
4210
|
```
|
|
@@ -3996,7 +4214,21 @@ OpenSSH keys only supported if ED25519 is available
|
|
|
3996
4214
|
Which meant that you do not have ruby support for ED25519 SSH keys.
|
|
3997
4215
|
You may either install the suggested Gems, or remove your ed25519 key from your `.ssh` folder to solve the issue.
|
|
3998
4216
|
|
|
3999
|
-
|
|
4217
|
+
## Error "Remote host is not who we expected"
|
|
4218
|
+
|
|
4219
|
+
Cause: `ascp` >= 4.x checks fingerprint of highest server host key, including ECDSA. `ascp` < 4.0 (3.9.6 and earlier) support only to RSA level (and ignore ECDSA presented by server). `aspera.conf` supports a single fingerprint.
|
|
4220
|
+
|
|
4221
|
+
Workaround on client side: To ignore the certificate (SSH fingerprint) add option on client side (this option can also be added permanently to the config file):
|
|
4222
|
+
|
|
4223
|
+
```
|
|
4224
|
+
--ts=@json:'{"sshfp":null}'
|
|
4225
|
+
```
|
|
4226
|
+
|
|
4227
|
+
Workaround on server side: Either remove the fingerprint from `aspera.conf`, or keep only RSA host keys in `sshd_config`.
|
|
4228
|
+
|
|
4229
|
+
References: ES-1944 in release notes of 4.1 and to [HSTS admin manual section "Configuring Transfer Server Authentication With a Host-Key Fingerprint"](https://www.ibm.com/docs/en/ahts/4.2?topic=upgrades-configuring-ssh-server).
|
|
4230
|
+
|
|
4231
|
+
## Miscelaneous
|
|
4000
4232
|
|
|
4001
4233
|
* remove rest and oauth classes and use ruby standard gems:
|
|
4002
4234
|
|
|
@@ -4012,9 +4244,3 @@ You may either install the suggested Gems, or remove your ed25519 key from your
|
|
|
4012
4244
|
* Going through proxy: use env var http_proxy and https_proxy, no_proxy
|
|
4013
4245
|
|
|
4014
4246
|
* easier use with https://github.com/pmq20/ruby-packer
|
|
4015
|
-
|
|
4016
|
-
# Contribution
|
|
4017
|
-
|
|
4018
|
-
Send comments !
|
|
4019
|
-
|
|
4020
|
-
Create your own plugin !
|