On 15-May-2017 09:08 -0600, Versfelt, Charles wrote:
I'm having an issue doing FTP, we're using a method we've used in
the  past.
Source file contains the script and the log goes to a second source
file. I changed some of the names but left the rest the same.
  Some suggestions were made [about what to change] to progress, but I 
noticed few clarifications were given about how the IBM i FTP client 
functions in the given scenario, to understand better, the reason for 
the failures.
FTP command in CL program:
FTP RMTSYS('SYSNAME.HOSTEDFTP.COM')
  The above request implicitly issues the "OPEN" FTP subcommand, i.e. 
OPEN SYSNAME.HOSTEDFTP.COM, upon initialization of the FTP client 
session.  Having named a Remote System/Server on the Start TCP/IP FTP 
(FTP) command, the next input required by the server for that OPEN 
request, would be the user-id and password.
Script:
 OPEN SYSNAME.HOSTEDFTP.COM
 USER prof_name passwd10
 CD  /Myron catalog
 PUT eprodcat_1746207GR.csv
 QUIT
The log I'm getting
Connecting to host ftp.HOSTEDFTP.COM at address xxx.xxx.xxx.xxx …
220 Service ready for new user.
  The above FTP220 feedback is in response to the implicit open; i.e. 
the connect was opened successfully to "ftp.HOSTEDFTP.COM" [aka 
SYSNAME.HOSTEDFTP.COM from the script].  The next step in processing is 
authentication, so the first line of input should be the user-id and 
password; the next prompt indicates that:
Enter login ID (prof_name):
  The OPEN having already been issued implicitly, effected per the 
RMTSYS specification on the STRTCPFTP command, the first token in the 
input-script would be accepted by the FTP server as the user-id, and the 
second string/token on that line would be accepted as the password. 
That is just as Tommy initially responded 
[
https://archive.midrange.com/midrange-l/201705/msg00403.html], 
suggesting that "OPEN" was interpreted as the user-id.
331 User name okay, need password for OPEN.
530 Authentication failed.
  The above therefore explains why FTP331 feedback indicates that the 
"User name" provided was "OPEN".  Though not conspicuous, the value 
accepted as a password was the text "SYSNAME.HOSTEDFTP.COM" [that, for 
obvious reasons, is not presented in any feedback].  For lack of a 
user-id named OPEN *with* a password of SYSNAME.HOSTEDFTP.COM being 
available on the server, the expected effect is the above authentication 
failure, the FTP530 feedback.
Enter an FTP subcommand.
USER prof_name **********
  At this point in the script, the FTP service should probably remain 
"open", though still not authenticated; i.e. the "USER" FTP subcommand 
should probably have been accepted by the server without error.? 
Probably moot, after correction to the prior issue, whereby the 
authentication would be expected to function properly on the first try.
No response from remote host; all connections closed.
 I am unsure why there would not be any more feedback messages from the 
FTP server other than the above "No response", since the USER FTP 
subcommand was processed; i.e. unsure why there is no feedback for any 
of the attempts to CD, PUT, and QUIT, that follow the USER subcommand.?
I have the AS/400 profile and password the same as the remote profile
and password. The only thing I can think of is that the remote
profile is lower case and the iSeries it's upper case.
I don't know if that matters.
  No matter about matching names/passwords; the server should be 
agnostic in that regard, because the authentication is effected via the 
input.  The input in this scenario, is from [source] data records of the 
member of a database [source] file.
I'm running this signed on under that user profile.
When I do FTP from the command line and enter the user profile and
password I successfully get in.
  The interactive/prompted request will exhibit the effect, 
conspicuously per prompting, that the first input, indeed should be, the 
user-id and password; i.e. elucidating, that the first two FTP 
subcommands, the OPEN and USER, are extraneous, and those records should 
be removed from the script [if the same RMTSYS is specified as the one 
on the OPEN subcommand].  Please note that the OPEN can remain scripted 
exactly as shown, but the FTP request would need to specify a bogus 
Remote System; e.g. the CL request could be coded, instead of what was 
shown, as:
   FTP RMTSYS(*NONE) /* init FTP scripting without open connection */
  Note: An asterisk prefix is discouraged/unsupported generally, in 
that context of a parameter value that is not a 
special-value/single-value, despite the lack of any warning in the help 
text.  Yet, such usage should never become an issue in this scenario; 
i.e. this could be "safely coded" in production, with almost zero chance 
of ill effect.
  The next issue that would be seen, if either a) only removing the 
OPEN, or b) only changing to use RMTSYS(*NONE) but leaving the OPEN, 
would be with the next line of text as input.  A requirement remains to 
remove the "USER" on the second line of the input-script; the input 
expected by the server is *only* data, just the user-id and password on 
the one line, whereas the "USER" FTP subcommand is a directive.  That 
correction was noted by Rich in 
[
https://archive.midrange.com/midrange-l/201705/msg00412.html]
  Note: The USER subcommand is available to be used in an already-open 
connection, for example, either after a failed authentication, or after 
a prior "REIN" FTP subcommand that had just re-initialized the session. 
 If the USER subcommand is coded on a line by itself, then the user-id 
and password both would be coded on the following line, just as they 
would be coded after an [implicit or explicit] OPEN subcommand.
As an Amazon Associate we earn from qualifying purchases.