Operating System - OpenVMS
1747984 Members
4788 Online
108756 Solutions
New Discussion юеВ

Re: DCL script to FTP files

 
ben_moore34
Advisor

DCL script to FTP files

Morning
I wonder if anyone could help me out with modifying a small DCL script which FTPs some files to a server?
We have 8 VAXs which seem to use different FTPs. Some use FTP & some use MULTI FTP as the command to get into the FTP prompt

There is a script which writes commands to a temp file ftpjob.tmp, executes ftpjob.tmp and then deletes it

$ open/write ftpjob ftpjob.tmp
$ wr ftpjob "$ftp 10.37.2.23 /username=ftp_to_share",-
"/password=""1password23"""
$ wr ftpjob "cd /VAX/OUT/SHARE/"
$ wr ftpjob "put ''source_file' ''target_file'"
$ wr ftpjob "bye"
$ wr ftpjob "$exit"
$ close ftpjob
$ @ftpjob.tmp
$! delete ftpjob.tmp;

This works fine on the systems which FTP is accessed by typing FTP


However, on the systems where Multi FTP is typed to access FTP (see below) I get Login or Password incorrect errors.



$ open/write ftpjob ftpjob.tmp
$ wr ftpjob "$multi ftp 10.37.2.23 /username=ftp_legacy_uk_prd",-
"/password=""1pwd4PRDUK"""
$ wr ftpjob "cd /VAX/OUT/APOLLO/"
$ wr ftpjob "put ''source_file' ''target_file'"
$ wr ftpjob "bye"
$ wr ftpjob "$exit"
$ close ftpjob
$ @ftpjob.tmp
$! delete ftpjob.tmp;


If I manually enter the commands at the prompt I can get in, not really sure what I'm doing wrong here..

Any help gratefully received

Thanks

BM


30 REPLIES 30
abrsvc
Respected Contributor

Re: DCL script to FTP files

This may just be a typo, but in the example you posted, multiftp has a space in it which would lead me to believe that the "multi" is recogniozed as invoking multiftp. This means that the "ftp" is being recognized or processed rather than the /username etc.

Please note that I do not have multiftp so I can not test this.

Dan
Steven Schweda
Honored Contributor

Re: DCL script to FTP files

> We have 8 VAXs which seem to use different
> FTPs. [...]

It might be useful to know something about
the software here (more than "VAXs").

Is this "MULTI FTP" related to MultiNet?

The DEC/Compaq/HP IP networking package
should identify itself using a command like:

tcpip show version
or:
ucx show version

depending on its age. MultiNet probably has
something similar, but you may be able to
find that about as fas as I could. ("HELP"?)

At a minimum:

WRITE SYS$OUTPUT F$GETSYI( "VERSION")

Other potentially interesting things:

Did this stuff ever work? If so, what has
changed recently?

Are you publishing real passwords here?

> If I manually enter the commands [...]

And what you enter manually is really what's
in those procedures? As usual, a transcript
showing actual commands with their actual
output can be more helpful than vague
descriptions and interpretations.
Hoff
Honored Contributor

Re: DCL script to FTP files

ftp is an ancient abomination of a protocol and being older than IP itself, is inherently hideous around firewalls, and it has the added bonus of transmitting your username and password credentials in cleartext. All that aside...

If this box is V6.2 or later, you're doing this the hard way.

Use the COPY /FTP command that's available in DCL.

It does symbol substitution.

It does passwords.

It does default directories.

It's trivially easy to use in DCL command procedures, and to substitute symbols within.

COPY /FTP /ASCII -
fromhost"user pass"::"/where/ever.txt" -
localfilename.txt

See the manuals, or see:

http://labs.hoffmanlabs.com/node/136

The more secure version of this operation, which avoids passwords, uses sftp. (There's unfortunately no DCL verb for that, though.) See the sftp documentation or see:

http://labs.hoffmanlabs.com/node/1118
ben_moore34
Advisor

Re: DCL script to FTP files

Thanks for the help so far!

I'm getting somewhere with it

If I issue the following at a command prompt I can get in

Multi ftp 10.37.1.23 /username=username /password="""password""" (I think it needs these quotes to be in the right case)


ATSR22 MultiNet FTP user process V4.0(118)
Connection opened (Assuming 8-bit connections)
<
[Attempting to log in as ******]
FTP>

However I'm trying to run this procedure within a script so that it writes the commands to ftpjob.tmp and then executes it(it's all within an existing procedure which sends lots of reports out)

$ open/write ftpjob ftpjob.tmp
$ wr ftpjob "$Multi ftp 10.37.1.23 /username= username /password="""password""""
$ wr ftpjob "cd /VAX/OUT/SHARE/"
$ wr ftpjob "put ben.txt ben.txt"
$ wr ftpjob "bye"
$ wr ftpjob "$exit"
$ close ftpjob
$ @ftpjob.tmp
$! delete ftpjob.tmp;
$ exit




I'm thinking that somehow it's either submitting the password in the incorrect casing or there's a space missing.

if try for example

Multi ftp 10.37.1.23 /username=******** /password="""****"""

then it'll connect

but if I

open/write benjob benjob.tmp
wr benjob "multi ftp 10.37.1.23 /username= ftp_legacy_uk_prd /password="""1pwd4PRDUK""" "
close benjob


then look inside the benjob.tmp file I have

multi ftp 10.37.1.23 /username= ftp_legacy_uk_prd /password="1PWD4PRDUK"

It has to be something small that I'm missing here I'd imagine

BM
Joseph Huber_1
Honored Contributor

Re: DCL script to FTP files

Is the remote systems username case sensitive ?
If yes, then it must be quoted on the DCL command as well, like the password.
http://www.mpp.mpg.de/~huber
ben_moore34
Advisor

Re: DCL script to FTP files

yes the host has a mixed case password.
It's got to be something to do with how the commands get written into the temp file first and then read back.

Hoff
Honored Contributor

Re: DCL script to FTP files

If the password is causing a problem...

Just get rid of the password.

Why?

At least that's being honest about the security here.
ben_moore34
Advisor

Re: DCL script to FTP files

By the way - some more info on Multi ftp

ATSR19 MultiNet FTP user process V4.0(118)
Connection opened (Assuming 8-bit connections)

ucx show version

DEC TCP/IP Services for OpenVMS VAX Version V4.0 - ECO Level 2
on a VAX 4000-600A running OpenVMS V7.1
The Brit
Honored Contributor

Re: DCL script to FTP files

BM
this is what you are currently doing

Write Outfile "Password="""Test""""

this appears in OutFile as

Password="TEST" (Not what you want!)

Try

Write Outfile "Password=""Test"""
(i.e. one less doublequote around the password string)

Should give;

Password="Test"

HTH

Dave