以下是在远程位置上执行清理活动的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
因此,您总是返回一个零退出代码,并且您的程序在其$?
中获得该代码。