/usr/bin/ecaccess-association-get.bat is in ecaccess 4.0.1-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | @rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
@rem ';
#!/usr/bin/perl -w
#line 15
#
# ecaccess-association-get: Get the Association Descriptive File
#
# Laurent.Gougeon@ecmwf.int - 2010-10-15
use ECMWF::ECaccess;
use Getopt::Long;
use Pod::Usage;
use Term::ReadKey;
my %opt = ( gateway => undef, template => 0, version => 0, help => 0, manual => 0, retry => 0, debug => 0 );
pod2usage( -noperldoc => 1, -exit => 1, verbose => 1 ) if !GetOptions(
\%opt,
qw(
gateway=s
template
version
help|?
manual
retry=i
debug
)
);
# Display version if requested
die ECMWF::ECaccess->VERSION . "\n" if ( $opt{version} );
my $associationName = $ARGV[0];
my $targetFile = $ARGV[1];
pod2usage( -noperldoc => 1, -exit => 1, verbose => 1 ) if ( $opt{help} );
pod2usage( -noperldoc => 1, -exit => 1, verbose => 2 ) if ( $opt{manual} );
pod2usage( -noperldoc => 1, -exit => 1, verbose => 0, -msg => "No association-name specified!\n" ) if not($associationName);
pod2usage( -noperldoc => 1, -exit => 1, verbose => 0, -msg => "No target-file specified!\n" ) if not($targetFile);
# Create the ECaccess Controler
my $ecaccess = ECMWF::ECaccess->new( $opt{retry}, $opt{debug});
# Get the Token (using the Certificate in $HOME)
my $token = $ecaccess->getToken();
# Get the Control Channel
my $controlChannel = $ecaccess->getControlChannel();
# If no Gateway is specified then use the default Gateway
$opt{gateway} = $controlChannel->getGatewayName()->result if ( not $opt{gateway} );
# Open the target file
open FILE, ">", $targetFile or die "Error creating file: " . $targetFile . "\n";
chmod 0600, $targetFile;
# Get the detail for the specified associationName
my $association =
$controlChannel->getAssociation( $token, $opt{gateway}, $associationName, $opt{template} ? 'true' : 'false' )->valueof('//getAssociationResponse/return');
# Print the parameters
print FILE "##############################################################\n";
print FILE "# Main Parameters\n";
print FILE "##############################################################\n";
print FILE "\$name='" . ( $association->{name} ) . "';\n";
print FILE "\$active='" . ( $association->{active} eq 'true' ? 'yes' : 'no' ) . "';\n";
print FILE "\$comment='" . $association->{comment} . "';\n";
print FILE "\$grantedUserList='" . $association->{grantedUserList} . "';\n";
print FILE "\$directory='" . $association->{directory} . "';\n";
print FILE "\$hostName='" . $association->{hostName} . "';\n";
print FILE "\$login='" . $association->{login} . "';\n";
print FILE "\$protocol='" . $association->{protocol} . "';\n";
print FILE "\n";
print FILE "##############################################################\n";
print FILE "# Data\n";
print FILE "##############################################################\n";
print FILE "\$data='\n" . $association->{data} . "';\n";
# Close file
close FILE;
# Logout
$ecaccess->releaseToken($token);
__END__
=head1 NAME
ecaccess-association-get - Get the Association Descriptive File
=head1 SYNOPSIS
B<ecaccess-association-get -version|-help|-manual>
B<ecaccess-association-get [-debug] [-gateway> I<name>B<] [-template]> I<association-name> I<target-file>
=head1 DESCRIPTION
Get the Descriptive File for the ECtrans Association specified by the I<association-name> parameter.
Once downloaded, the I<target-file> can be modified and processed through the B<ecaccess-association-put>
command.
When using the B<-template> option, if the Association already exists in the ECaccess Gateway Database,
then the command return with an error. In order to create a new Association similar to an existing one
the B<ecaccess-association-get> command can be used to retrieve the Descriptive File of the existing
Association. The file can then be updated and pushed to the ECaccess Gateway Database with the
B<ecaccess-association-put> command.
An ECtrans Association Descriptive File contains parameters for ECtrans of the general form $name='value'.
Each ECtrans Association has their own Descriptive File, and parameters in any given Descriptive File will be
passed to the ECtrans container whenever a transfer is requested to the corresponding Association.
Blank lines and leading spaces and tabs are ignored when they do not occur in single quoted strings. Lines
whose first non-space character is a pound-sign (#) are comments, and are ignored. Note that comments are
not allowed on the same line as parameters and don't persist when the Descriptive File is retrieved from
the Gateway (they might however be used when Descriptive Files are archived on your system).
The parameters are the following:
=over 8
=item I<active>
This is a boolean which indicate if the Association can be used by ECtrans or not (e.g. 'yes' or 'no'). You might
want to deactivate an Association but still keep it in the ECaccess Gateway Database for later.
=item I<comment>
This is a comment about your Association (e.g. 'Access to the archive system').
=item I<grantedUserList>
This is the list of ECMWF user identifiers which are allowed (other that you) to use this Association. Multiple users
should be separated by a column (e.g. 'abc,def,ghi').
=item I<directory>
This is the directory where to download/upload the files from/to (e.g. '/tmp/data').
=item I<hostName>
This is the name of the host to connect to (e.g. 'hostname.example.ms').
=item I<login>
This is the login to use to connect to the host specified in the I<hostName> parameter (e.g. 'anonymous').
=item I<protocol>
This is the protocol ECtrans will use to connect to the host specified in the I<hostName> parameter. The list of available
protocols for a Gateway can be displayed with the B<ecaccess-protocol-list> command (e.g. 'genericFtp').
=item I<data>
This parameter can be split over multiple lines and contains various options for the I<protocol> which have been selected
for the Association (these options are passed verbatim to the Module which implement the I<protocol>). In order to get the
list of available options for a protocol please use the command B<ecaccess-association-protocol> with the name of the B<protocol>.
The availabe options depends of the version of the ECaccess Gateway which is used to host the Association so it might be
that some options are available for some Gateways and not available for others. An unknown option will be silently ignored
by ECtrans. The format of an option is {protocol-shortname}.{option}={value} (e.g. ftp.port="21" would set the port option
of the genericFtp module to "21"). An example of this parameter is given in the EXAMPLES section below.
=back
=head1 ARGUMENTS
=over 8
=item I<association-name>
The name of the Association to retrieve the corresponding Descriptive File.
=item I<target-file>
The name of the file where to download the Descriptive File.
=back
=head1 OPTIONS
=over 8
=item B<-gateway> I<name>
This is the name of the ECaccess Gateway where the Association is installed.
It is by default the Gateway you are connected to. In order to get the name
of your current Gateway you can use the B<ecaccess-gateway-name> command. When
using the commands at ECMWF the default Gateway is always "ecaccess.ecmwf.int".
=item B<-template>
Allow creating a new Association Descriptive File for the B<ecaccess-association-put> command.
If the Association already exists then the command fails.
=item B<-version>
Display version number and exits.
=item B<-help>
Print a brief help message and exits.
=item B<-manual>
Prints the manual page and exits.
=item B<-retry> I<count>
Number of SSL connection retries per 5s to ECMWF. This parameter only apply to the
initial SSL connection initiated by the command to the ECMWF server. It does not
apply to all the subsequent requests made afteward as it is mainly targeting errors
that can happen from time to time during the SSL handshake. Default is no retry.
=item B<-debug>
Display the SOAP and SSL messages exchanged.
=back
=head1 EXAMPLES
B<ecaccess-association-get -template> I<test> I<./test>
Create a new Association Descriptive File for an Association named I<test> and store it in your
current directory (file I<./test>). The file can then be edited and updated accordingly to your
requirements.
B<ecaccess-association-put -password> I<./test>
Create the Association with the previously updated I<./test> Association Descriptive File.
B<ecaccess-association-get -gateway> I<ecaccess.ecmwf.int> I<ginko> I<./ginko>
Get the Descriptive File for the existing I<ginko> Association on the I<ecaccess.ecmwf.int>
Gateway.
B<ecaccess-association-put -gateway> I<ecaccess.ecmwf.int> I<./ginko>
Push the Association back (once updated).
This is an example of an Association Descriptive File:
##############################################################
# Main Parameters
##############################################################
$active='yes'
$comment='Access to the archive system'
$grantedUserList='abc,def,jhi'
$directory='/tmp/data'
$hostName='hostname.example.ms'
$login='anonymous'
$protocol='genericFtp'
##############################################################
# Data
##############################################################
$data='
ftp.mkdirs="yes"
ftp.passive="no"
ftp.port="21"
ftp.suffix=".tmp"
ftp.usetmp="yes"'
Please note the multiple lines in the I<data> parameter.
=head1 SEE ALSO
B<ecaccess-association-delete>, B<ecaccess-association-list>, B<ecaccess-association-protocol>,
B<ecaccess-association-put> and B<ecaccess>.
=cut
__END__
:endofperl
|