我有一个脚本,当我通过SSH服务器自己执行该脚本时效果很好,但是在持续集成服务器Hudson运行该脚本时遇到了问题。
我正在嵌入式Linux系统(目标)上自动化测试。目标通过串行连接到服务器A(RHEL 5),并通过minicom进行操作。服务器B(FC 12)构建实际在目标服务器上运行的测试,并且可以发送到服务器A。服务器C(RH)托管哈德森,而服务器B作为从服务器。
我已经编写了一个runscript(http://linux.die.net/man/1/runscript)脚本来完成实际目标所需的一切;它引导映像,从服务器B挂载目录并执行测试。服务器B上的bash脚本使用runscript脚本以及一些伴随动作来调用minicom。我在服务器B上有一个bash脚本,它使用
ssh -t -t ServerA bashScript.sh
使这些测试在目标上运行。我在服务器C上,可以通过ssh到服务器B并执行ssh到服务器A的脚本来运行那些测试,该服务器使用runscript执行minicom。ew。 回顾:
服务器A:Hudson使用其从属机制来SSH到服务器B。
服务器B:kickOffTests.sh
有线路ssh -t -t ServerA runTests.sh
服务器A:runTests.sh
调用一个Perl脚本,该脚本调用minicom -S my.script ttyE1
引导后目标:从服务器B挂载测试所在的目录,然后输入该目录。它调用另一个bash脚本,该脚本运行测试,它们是已编译的C可执行文件。
现在,当我自己执行这些脚本中的任何一个时,它们就会执行应有的操作。然而,当哈德森试图做同样的事情,比它抱怨在“另一个bash脚本”调用的C可执行文件,行小型机会议./executable
,与./executable: cannot execute binary file
我仍然有很多关于linux的知识,但是我想这个问题是由于Hudson没有与控制台连接而造成的。我不知道哈德森到底是怎么控制它的奴隶的。我export TERM=console
在运行kickOffTests.sh之前尝试在配置中使用该行,但是问题仍然存在。
谁能向我解释发生了什么以及如何解决?我无法从此等式中删除任何服务器。也许可以将minicom排除在等式之外,但这会给该项目增加未知的时间,因此我更希望使用现有的解决方案。