如何使SFTP cozbatch返回不同的错误代码

时间:2016-05-12 15:44:06

标签: unix sftp zos

我需要为每个错误获取不同的SFTP退出代码。例如,没有这样的文件或目录' - >退出代码= 552或550而不是返回1。 我尝试过以下操作并且无效:

//A05FTP   EXEC PROC=SFTPROC,COND=(0,NE)                                
//COPSFTP.MYSTDIN DD *                                                  
host="xpto.xpty.xptz"                                              
lzopts mode=text        
cd /home/apl/files/unl                         
ls                                                                      
a=`ls | wc -l`                                                         
echo `$a`                                                                
echo $?                                                                 
QUIT                                                                    
//*     

并且假脱机中的输出是:

 cozsftp> lzopts mode=text                          
 mode=text                                         
 cozsftp> lzopts mode=text                          
 mode=text                                         
 cozsftp> cd /home/apl/files/unl      
 Ý09.807¨ Invalid command.                          
 cozsftp> a=      1                                 
 CoZBatchÝI¨: returning      rc=exitcode=1                                                                         

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

COZBATCH允许您将shell脚本嵌入到JCL中,因此您不需要使用BPXBATCH。 BPXBATCH确实是一个糟糕的实用程序。如果你正在使用Co:Z那么对你有好处就会摇滚。

如果要运行shell命令,则需要使用!逃避角色。

!echo $ a

FWIW,SFTP总是在出错时返回1。我不确定你是否可以改变它。应该在sysout中记录错误。

答案 1 :(得分:0)

你的问题可能只是 echo` $ a` 。请尝试用引号括起来代替刻度线。

更一般地说,如果你想进行更详细的错误检查,而不是使用SFTP程序(SFTPROC),我认为你自己写一个用BPXBATCH执行的简单脚本会更好。该脚本将发出相同的SFTP命令,但您可以捕获并重定向输出(STDOUT / STDERR)并根据返回值($?)和任何错误消息,您当然可以检测到您可能需要的所有异常情况。