【发布时间】:2012-04-05 16:38:03
【问题描述】:
我有一个 ant 目标,我成功地使用 sshexec-task 在 OpenSuse 11 上使用 tomcat 安装服务器。
当我尝试运行启动新安装的服务器的脚本时,我的问题就出现了。 我需要以 root 身份执行此操作,所以我使用这样的任务:
<sshexec host="${tss.hostname}"
username="${username}"
password="${password}"
trust="true"
Command="/usr/local/bin/foo/bar/tomcat/bin/startup.sh"
failonerror="false"/>
问题是我需要从它所在的文件夹运行脚本,因为它会从该位置找到 CATALINA_HOME 和 JAVA_HOME。并且路径“foo/bar”会随着时间而改变,所以我不想永久设置它。 我只想将我的跑步路径更改为正确的路径。
由于我无法像那样启动服务器,我想调查一下并更改脚本,所以我使用“CommandResource =“cmd.txt”而不是直接命令。我想我可以用它来设置 CATALINA_HOME 之前我启动了服务器并以这种方式解决了问题。
这是使用 cmd.txt 时的结果:
[sshexec] Connecting to foo-bar:22
[sshexec] cmd :
[sshexec] cmd : cd /usr/local/bin/foo/bar/tomcat/bin
[sshexec] cmd : pwd
[sshexec] /root
[sshexec] cmd : echo $PATH
[sshexec] /usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
[sshexec] cmd : export CATALINA_HOME=$PATH:/usr/local/bin/tibco/tss/4.5.0/tomcat
[sshexec] cmd : echo $PATH
[sshexec] /usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
这说明cd和export命令都没有任何作用。
我怀疑我需要更改 ssh 的权限。我已经读到我可能需要在 .ssh/config 中进行更改。但我不知道如何或在哪里......
所以,总结一下这个长长的问题:
我需要做什么才能使用在 Jenkins 中运行的 ant 脚本以 root 身份从正确的 tomcat/bin 文件夹运行我的 startup.sh?
【问题讨论】:
-
您能否将
output="sshlog.txt" verbose="true"添加到您的 sshexec 并发布 sshlog.txt 的内容? -
我也怀疑
CommandResource文件中的每一行都在单独的子shell 中执行。 -
感谢您的意见。我在任务中添加了 output="sshlog.txt" verbose="true" 并再次运行它。遗憾的是 sshlog.txt 是空的。我猜这本身就是一个答案......
-
通过
运行ssh,看看结果是否不同。 -
会做,但目前我没有时间。尘埃落定后会回到这个...