我正在写一个SH脚本,该脚本从SFTP服务器下载文件。
我想识别脚本的SFTP连接期间是否出现任何错误。
但是而不重定向我的输出,也不使用grep ,因为我已经将输出重定向到其他日志文件。
我尝试使命令类似于以下示例,但是我需要{---?---}
部分。
例如,我使用case
语法,但是我可以使用if
或任何其他语法。
sftp <user>@<host>:<remote_file> <local_destination>
if [ $? != 0 ];
then
case {---?---} in
{---?---})
_error_exit "permission denied, please try again"
;;
{---?---})
_error_exit "SFTP server not responding, maybe offline"
;;
{---?---})
_error_exit "file not found"
;;
*)
_error_exit "unable to download the file from SFTP server"
esac
else
_status "file downloaded"
fi
}
最佳答案
OpenSSH sftp
命令只有两个退出码,0
表示成功,1
表示失败。
因此,如果您需要区分不同的错误,则解析命令输出是您唯一的方法。
您可以将sftp
命令输出重定向到一个临时文件,解析该临时文件以查找错误消息,然后打印该临时文件以进行输出,以便它也包含在您的日志中。
sftp ... > /tmp/sftp.log
grep ... /tmp/sftp.log
...
cat /tmp/sftp.log
关于shell - Shell脚本中的SFTP错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22565167/