gpt4 book ai didi

bash - 在 Hudson 调用的脚本中运行时,cp 命令失败

转载 作者:行者123 更新时间:2023-12-02 14:05:12 25 4
gpt4 key购买 nike

这是一个谜题。如果我从命令行运行命令以远程复制文件,它会完美运行。如果我在服务器(托管 Hudson)上的脚本中运行相同的命令,它也可以完美运行,与从命令行以 hudson 一样运行作业相同。但是,如果我在 Hudson 作业的 bash 脚本中将确切的命令作为函数运行,则会失败并显示:

cp: cannot stat '/opt/flash_board.tar.gz': No such file or directory

变量定义为:
original_tarball=flash_board.tar.gz

并且在范围内(变量扩展在脚本中正常工作)。

原来的命令是:
ssh -n -o stricthostkeychecking=no root@$IP_ADDRESS ssh -n -o stricthostkeychecking=no 169.254.0.2 cp /opt/$original_tarball /opt/$original_tarball.bak

我也尝试过:
ssh -n -p 1601 -o stricthostkeychecking=no root@$IP_ADDRESS cp /opt/$original_tarball /opt/$original_tarball.bak

它指向正确的端口,但以完全相同的方式失败。

作为引用,所有变量都已被检查为有效。我最初认为这是一个替换错误,但似乎并非如此,所以我尝试使用 Hudson 凭据运行它:
sudo -u hudson ssh -n -o stricthostkeychecking=no root@$IP_ADDRESS ssh -n -o stricthostkeychecking=no 169.254.0.2 cp /opt/$original_tarball /opt/$original_tarball.bak

我得到完全相同的结果(它有效)。因此,只有从 Hudson 作业运行此命令时才会失败。

以下是事件的顺序:
  • Hudson 作业设置参数并调用 shell 脚本。
  • 脚本中的一个函数尝试通过 SPI 总线将文件从嵌入式 Montevista (Linux) 板远程复制到第二个嵌入式 Arago (Linux) 板
  • 两 block 板在物理上都在同一个主板上,但是除了通过串行控制台 session 之外,没有办法直接访问 Arago 板(这是不可行的,这是一个跨网络运行的自动化作业)。

  • 我已经尝试过使用带有 -p 1601 的 ssh (到 Arago 端的正确端口)。

    我可以使用 scp 将远程文件复制到与具有不同文件扩展名的远程文件相同的位置吗?

    就像是:
    scp -o stricthostkeychecking=no root@$IP_ADDRESS /opt/$original_tarball /opt/$original_tarball.bak

    我让几个开发人员看了一下这个,他们也被难住了。任何人都有任何想法(A)为什么会失败和(B)如何解决它。我很确定我可以编写一个脚本在远程机器上本地运行,但这似乎不是必需的。

    哦,如果我在 Montevista 板上运行完全相同的命令(这意味着我不必通过 SPI 总线(169.254.0.2),它可以完美地从 Hudson 工作中运行。

    最佳答案

    因此,事实证明这与问题完全无关。我使用测试 Hudson 脚本将问题分解为小块,从原始脚本中添加越来越多的复杂性,直到它像以前一样失败。

    原来是飞行员错误,我写了 if区分两个板(Arago 和 Montevista)的语句,然后抽象出传递给 if 的变量。声明到通过哪个板是模棱两可的,所以if逻辑总是捕获第一场比赛(应该如此),我试图在 Arago 板上复制的 flash 脚本在 Montevista 板上不存在(嗯,它有不同的名称),所以返回的错误是绝对正确的。

    很抱歉启动并感谢您提供的所有帮助。

    关于bash - 在 Hudson 调用的脚本中运行时,cp 命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7972983/

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