gpt4 book ai didi

bash - 如何在Shell脚本中建立远程连接时捕获错误

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

这就是我的shell脚本的一部分。

#! /bin/sh
sftp -i $IdentityFile $ServerAddress << EOF
command 1 #Execute in the remote
command 2 #Execute in the remote
bye
EOF
command 3 #Execute locally

根据我目前对脚本的了解,如果命令执行失败,则控制权仅传递给下一个命令。但是,如果在上述块中sftp命令无法建立网络连接怎么办?这是否意味着 command 1command 2将在本地执行?还是将控件跳转到 command 3

如何在sftp中捕获可能的错误并将控件定向到 command 3?如果可能的话,我是否可以使用 ?变量检测到错误,以采取某些先发制人的行动?一些指导会很棒。

最佳答案

有几件事要做。

首先,您需要将输入提取为一个函数,以允许使用 command3 进行管道传输,这将更加清晰:

function sfpInstruction() {
cat << EOF
command 1
command 2
bye
EOF
}

因此,您的sftp指令可以更改为:
tmpFile="/tmp/errorFile.txt"
sftp -i $IdentityFile $ServerAddress $( sfpInstruction ) 2>"$tmpFile" || command3

这样的方式:
  • 您的错误文件
  • 中所有错误消息都超出了
    无论如何,
  • ,如果sftp以失败状态退出(非0),则GNU/Bash将执行command3
  • 如果您还希望Command3读取/检查/分析错误消息,则可以为其指定“$ tmpFile”
  • 关于bash - 如何在Shell脚本中建立远程连接时捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53147811/

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