【问题标题】:Jenkins Execute shell is failed after executing ssh to a remote server对远程服务器执行 ssh 后,Jenkins Execute shell 失败
【发布时间】:2018-10-13 08:27:44
【问题描述】:

我正在创建一个 Jenkins 作业,其中正在运行 ssh 命令来执行脚本,以便在远程服务器上使用 diff 命令比较两个文件夹。脚本运行良好,正在创建输出文件。但是在这个命令之后 Jenkins 执行 shell 块是失败的。

命令:

ssh -T user@dtest.com "bash /tmp/sample.sh" >> result.txt

日志

ssh -T user@dtest.com "bash /tmp/sample.sh" >> result.txt

stdin: 不是 tty

“执行shell”被标记为失败

【问题讨论】:

  • 您确定脚本运行正常吗?无论脚本如何运行,都会创建该文件,因为您使用的是标准流重定向运算符。
  • 如果将-T 替换为-t 会发生什么?

标签: bash shell jenkins ssh stdin


【解决方案1】:

我不确定sample.sh 应该做什么,但我知道您正在尝试捕获此脚本记录的内容。

我会尝试几种解决方案:

ssh -T user@dtest.com "bash /tmp/sample.sh >> result.txt"

这应该将您的输出保存在您的远程服务器中。然后您可以使用以下命令将此文件从远程复制到本地:

scp user@dtest.com:/remote/dir/result.txt /local/dir/

更多内容:Copying files from server to local computer using ssh

如果您选择此解决方案,您还可以考虑直接从您的脚本中编写您的result.txt,并保留控制台输出以用于重要的日志记录。

我能想到的另一个解决方案是使用

ssh user@dtest.com "bash /tmp/sample.sh" > result.txt

使用此解决方案,您可以将输出直接重定向到本地计算机。 但是您需要删除 ssh "-T" 选项。你会遇到 Jenkins 的其他问题。所以这可能不适合你。

ssh -T 禁用伪 tty 分配,这听起来像是您问题的根本原因。 (https://docs.oracle.com/cd/E36784_01/html/E36870/ssh-1.html)

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 2012-07-25
    • 2016-03-07
    • 2018-12-04
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多