linux - 在 Jenkins 中使用 ant sshexec 运行脚本时如何更改工作目录?

标签 linux ant ssh jenkins

我有一个 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/

相关文章:

linux - 开放固件设备树概述/引用手册

ant - Sonar 测试和二进制属性,它们有什么作用?

java - Sourceforge 每日构建

作为 cron 作业失败的 Ruby 脚本

c# - .NET Core SQLite 'database is locked' 仅在 Linux 上

regex - 如何使用 sed 删除带空格的行?

java - FindBugs 不接受 ANT 脚本中的 bcel.jar

linux - ssh登录后执行命令

linux - 将参数传递给远程 SSH

git - 如何为Git同步操作指定ppk?