bash - 对远程服务器执行 ssh 后,Jenkins Execute shell 失败
问题描述
我正在创建一个 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
标准输入:不是 tty
“执行shell”被标记为失败
解决方案
我不确定sample.sh
应该做什么,但我知道您正在尝试捕获此脚本记录的内容。
我会尝试几种解决方案:
ssh -T user@dtest.com "bash /tmp/sample.sh >> result.txt"
这应该将您的输出保存在远程服务器中。然后您可以使用以下命令将此文件从远程复制到本地:
scp user@dtest.com:/remote/dir/result.txt /local/dir/
更多上下文:使用 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)
推荐阅读
- vba - 使 VBA 产生百分比,而不是小数
- angular - 使用显示未定义的 EventEmitter 发出数组
- r - R文本挖掘 - 删除不同语言中的停用词会导致 aumlet 问题
- php - PHP 复选框未定义的偏移量
- cordova - Phonegap/Cordova 材料设计 MDC
- opencv - 分割图像中的数字
- angular - 当占位符在primeng中达到输入宽度时换行
- javascript - JSRender 将两个“数据集”传递给模板
- css - Web 组件 - 如何设置重叠组件的样式 - 看起来像下拉菜单
- r - R:将 (n*P) * N 数据帧转换为 n * (N*P)