gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:07:36 26 4
gpt4 key购买 nike

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

scp ${HostUser}@${HostServer}:$4/*$no*.gz 
gunzip

当我调试时,发现以下原因:
1.由于连接丢失导致文件传输不完整
2.手动执行gunzip命令时,它给出了文件末尾找不到错误。因此,它在文件中随机创建垃圾值,并且我的脚本运行成功,这是不正确的。
所以我的查询是:
  • 我可以存储scp命令的返回码吗,通过它我可以知道完成了完整的文件传输。如果未完成完成trasnfer,则使脚本失败,以便gunzip命令不要尝试打开不完整的文件并在之后存储垃圾值gunzip命令
  • 我还面临一个奇怪的问题,即第一次运行scp命令时,连接丢失了,但是当我从同一 session 再次触发scp命令时,它成功了。但是在生产中每次都会有新的环节,因此我们无法承受定期的工作失败。
    同样是一个特定的文件,连接将在5秒钟后丢失。我检查了与远程服务器的超时 session 是5分钟

  • 请建议

    最佳答案

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

    scp ${HostUser}@${HostServer}:$4/*$no*.gz 
    EXIT_STATUS=$?
    if [ $EXIT_STATUS -eq 0 ]; then
    gunzip
    else
    ...some error handling
    fi

    关于shell - 如何在shell脚本中获取scp命令失败并返回连接丢失错误的返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25570611/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com