首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取shell脚本中连接丢失错误scp命令失败的返回代码

如何获取shell脚本中连接丢失错误scp命令失败的返回代码
EN

Stack Overflow用户
提问于 2014-08-29 14:40:12
回答 1查看 5.6K关注 0票数 0

我有一个shell脚本,在这个脚本中,我使用下面的命令拉一个远程服务器的*.gz文件,而在scp之后,我正在执行gunzip命令。问题是,在执行scp时,连接会丢失,因此不完整的*.gz文件将保存在我的本地服务器目录中,并且当我试图在scp命令的下一行中进行持枪压缩时,它会成功地压缩文件,当我打开该文件时,它会包含垃圾值。

代码语言:javascript
复制
scp ${HostUser}@${HostServer}:$4/*$no*.gz 
gunzip 

当我调试时,我发现以下原因: 1.由于连接丢失而导致的文件传输不完整2。在手动执行gunzip命令时,它给出了文件not error.So的结尾,它在文件中随机创建垃圾值,我的脚本正在成功运行,这是不正确的。因此,我的问题是:

  1. 我可以存储scp命令的返回代码吗?通过它,我可以知道在什么地方完成了完整的文件传输,.If完全转换没有完成,那么脚本就失败了,这样武装scp命令就不会试图打开不完整的文件,并在gunzip命令之后存储垃圾值。
  2. 我还面临着奇怪的问题,当我第一次运行scp命令时,连接丢失了,但是当我再次从同一会话中触发scp命令时,它就成功了。但是在生产中,每次都是新的会话,所以我们不能有正常的工作失败也有一个特定的文件,连接失去了5秒。我查看了远程服务器超时会话是5分钟。

请建议

EN

回答 1

Stack Overflow用户

发布于 2014-08-29 16:18:33

“$?”将保存最后一个命令的退出代码,以便在scp命令之后将其分配给一个变量。然后执行一个if语句来检查退出代码是否= 0,为了成功完成,然后运行gunzip命令。

代码语言:javascript
复制
scp ${HostUser}@${HostServer}:$4/*$no*.gz 
EXIT_STATUS=$?
if [ $EXIT_STATUS -eq 0 ]; then
   gunzip
else
   ...some error handling
fi
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25570611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档