我有一个 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 脚本从正确的 tomcat/bin 文件夹以 root 身份运行我的 startup.sh?
最佳答案
我发现在同一行完成时“cd”有效...
<sshexec host="${tss.hostname}"
username="${username}"
password="${password}"
trust="true"
Command="(cd /usr/local/bin/foo/bar/tomcat/bin; startup.sh)"
failonerror="false"/>
我实际上并没有用它来运行 shell 脚本,但我经常让 ant 更改目录,然后运行 GIT 命令。
关于linux - 在 Jenkins 中使用 ant sshexec 运行脚本时如何更改工作目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799897/