SSH未返回退出代码



以下是在远程位置上执行清理活动的SSH代码

#!/bin/ksh -x
ssh "$RFTPUSERID@$RFTPSERVER" /bin/bash 2>> "${LOGFILE}" << EOF
shopt -s extglob
cd "${ARCHIVEPATH}"
find  "${ARCHIVEPATH}" -type f -mtime "+${ARCHIVERETENTIONDAYS}" -name "${WLDCRD}*" -exec rm -rf {} ;
date="$(date '+%Y%m%d_%H%M%S')"
for file in "${ARCHIVEPATH}"!(*.gz) 
do
newFile="${file}$date"
echo "${newFile}";
mv "$file" "${newFile}";
gzip "${newFile}";
done
exit
EOF
if [ $? -eq 0 ]; then
echo "Success"
fi

我想捕获退出代码以使用$检查故障?

但在运行echo$?时?,它不返回

如何获取SSH命令的返回代码,或者有更好的方法来处理SSH 的错误

从ssh手册页:

EXIT STATUS ssh将以远程命令的退出状态退出,如果发生错误,则以255退出。

您以HERE文档的形式提供远程命令。这个远程脚本中的最后一个命令是

exit

相当于

exit 0

因此,您总是返回一个零退出代码,并且您的程序在其$?中获得该代码。

相关内容

  • 没有找到相关文章

最新更新