2016-05-12 71 views
0

我需要为每个错误获取不同的SFTP退出代码。例如“没有这样的文件或目录” - >退出代码= 552或550,而不是返回1. 我试过以下,并没有奏效:如何使SFTP cozbatch返回不同的错误代码

//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                   

任何人都可以帮我吗?

回答

0

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

+0

我必须运行SFTP处理程序。我有单引号,但它仍然不起作用。谢谢。 –

1

COZBATCH允许你将shell脚本嵌入到JCL中,所以你不需要使用BPXBATCH。 BPXBATCH确实是一个糟糕的实用程序。如果你使用的是Co:Z,那么对你来说很好。

如果你想运行shell命令,你需要使用!转义字符。

!echo $ a

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