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

Posted

技术标签:

【中文标题】如何使 SFTP cozbatch 返回不同的错误代码【英文标题】:How to make SFTP cozbatch return different error codes 【发布时间】:2016-05-12 15:44:05 【问题描述】:

我需要为每个错误获取不同的 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                                                                    
//*     

并且spool中的输出是:

 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                                                                         

谁能帮帮我?

【问题讨论】:

【参考方案1】:

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

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

!echo $a

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

【讨论】:

【参考方案2】:

您的问题可能只是 echo `$a`。尝试用引号而不是刻度线括起来。

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

【讨论】:

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

以上是关于如何使 SFTP cozbatch 返回不同的错误代码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 phpseclib 通过 SFTP 检查上传的文件是不是存在

如何创建不同的pendingintent 使filterEquals() 返回false?

如何使带有“.php”的网址返回“找不到对象”错误?

带有 SFTP 的 Paramiko SSH 客户端

如何使 bash 函数在任何错误时返回 1

如何使授权属性返回自定义 403 错误页面而不是重定向到登录页面