Yes. You are thinking that an error in the command being run in QSH percolates up to RPG. The call to QCMDEXC completed normally. The call to SCP did not. You need to retrieve that value. The QSH command returns with message completion message QSH0005. That won't trigger your On-Error. The second level text will show you if you have an error or not. Run your command interactively, and then prompt the results. You should see something like Command ended normally with exit status 1.

QSH CMD(pwd)
Command ended normally with exit status 0.
QSH CMD('cd /fred')
Command ended normally with exit status 1.




Kevin Bucknum
Senior Programmer Analyst
MEDDATA/MEDTRON
Tel: 985-893-2550

-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Don Brown
Sent: Friday, September 04, 2015 3:18 AM
To: Midrange Systems Technical Discussion
Subject: Re: Verbose logging when using scp

Thanks Scott - Here is the way the download is being executed;

Could the problem be that I am using QCMDEXC to execute the QSH command ?

D SDS SDS 429
D SDSPGM *PROC
D SDSPSD *STATUS
D SDSRTN *ROUTINE
D SDSPRM *PARMS
D SDSMSGID 40 46
D SDSMSGDTA 91 170
D SDSWS 244 253
D SDSUSR 254 263

cmd = 'ADDENVVAR ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG) VALUE(Y) +
REPLACE(*YES)';

cmdlen = %len(%trim(CMD));
callp QcmdExc(cmd:cmdlen);

CMD = 'QSH
CMD('''/QOpenSys/QIBM/ProdData/SC1/OpenSSH/openssh-4.7p1/bin/scp
-B
-i /home/sftpuser/.ssh/id_rsa
PREMXXXX@xxxxxxxxxxxxxxx:/IN/CCL-B-20150904.csv
/home/sftpuser/CCL-B-20150904.csv''')';

cmdlen = %len(%trim(CMD));
monitor;
callp QcmdExc(cmd:cmdlen);
on-error;
// Handle error here Check SDSMSGID and SDSMSGDTA
endmon;

Running this code in debug the call completes and the next statement is the endmon. The file being retrieved does not exist but no error is encountered.

Thank you for your assistance.



Don Brown

MSD Information Technology

Suite 5/29 McDougall Street Milton Q 4064 ( 07 3368 7888
+ PO Box 1629 MILTON Q 4054
Ê 07 3368 7877
* Don.Brown@xxxxxxxxxx
È 0408 751 644
þ www.msd.net.au www.architect4web.com.au





I am a proud supporter of THE REFERRAL NETWORK and recommend the services of the other member businesses. For more information please checkout the website www.refnet.net.au





From: Scott Klement <midrange-l@xxxxxxxxxxxxxxxx>
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
Date: 03/09/2015 05:30 PM
Subject: Re: Verbose logging when using scp
Sent by: "MIDRANGE-L" <midrange-l-bounces@xxxxxxxxxxxx>



The exit status should be used to determine if the transfer was
successful. When the exit status reports that something failed, the
error messages (which you call a "log") should be used to determine what
the specific problem was.

I have never found the -v (or -vv or -vvv) to be helpful. These are
really intended for the people who write the code inside the scp (or
other ssh tools) to understand internal processes... not helpful to
people like you or I. That's been my experience, anyway.

We need to understand why you aren't getting a non-zero exit status when
the transfer fails. Can you please explain how you are calling this?
You previously showed some RPG code using QCMDEXC API to run the QSH
command, but it did not show how you retrieved the exit status.



On 9/3/2015 1:41 AM, Don Brown wrote:
I have changed the command as suggested and while I am now getting a log
I
am not getting the desired information.

Using the following command;
scp '-i /home/sftpuser/.ssh/id_rsa'
'PREMXXXX@xxxxxxxxxxxxxxx:/IN/CCL-T-20150902.csv'
'/home/sftpuser/CCL-T-20150902.csv' >
/home/sftpuser/poslogn1.txt 2>&1

Provides this output.
************Beginning of data**************
Warning: Identity file /home/sftpuser/.ssh/id_rsa not accessible: No
such
file or directory.
************End of Data********************

And the file is successfully received.

I can use -v or -vv or -vvv and the verbosity of the log increases with
each level.

What I want to achieve is to know;

Was the file retrieved successfully
If not -
a) Does the file to be retrieved exist ?
b) Was there a communication or authentication error
c) Something else

Even with verbose logging there is no error as such in the log if I use
a
file name that does not exist

The following line is received if the transfer is successful
Sink: C0755 389 CCL-T-20150902.csv

The exit status is always 0 regardless if the file is found and
transferred, or the file is not found or if the communication connection
fails.

There can be times when the file to be retrieved does not exist and this
can be quite valid but at this stage I am unable to confirm this in any
logging I have been able to obtain from the process.

Does anyone have any suggestions ?

Thanks

Don Brown






From: Justin Dearing <zippy1981@xxxxxxxxx>
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
Date: 02/09/2015 05:09 AM
Subject: Re: Verbose logging when using scp
Sent by: "MIDRANGE-L" <midrange-l-bounces@xxxxxxxxxxxx>




From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of
Don Brown
I have read I am now more confused if I should be using SCP or SFTP.
I am using SCP as there is only a single file to be transferred at a
time and therefore saw no need to create a script file


scp and sftp are equally secure. The sftp client is intended for
interactive use. scp is better for your purposes. See this supersuer
question:

http://superuser.com/questions/134901/whats-the-difference-between-scp-and-sftp



You probably want to add -C to compress the stream and speed things up.
Having the remote user zip the csv and you unzipping it would reduce the
payload further.

Kevin is correct that -v is as verbose as scp and sftp both get. You
just
need to pipe the output to a file. However, -v is probably more verbose
than you want, and you probable want to omit it unless you care about
the
intricacies of the ssh session. Omitting the -v will get you file not
found
and public/private key wrong error messages.

However, some of those error messages will go to stderr and not stdout
You
Probably want to use &> instead of > . That will definitely work with
bash
in PASE, I'm not sure about the default ksh shell.

This page is good reading on I/O redirection in unix
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html.


Justin



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.