[英]How can I change the working directory when I run a script with ant sshexec in 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命令。
是的我也遇到了同樣的問題。 cd命令不適用於sshexec。 替代方法是將所有命令放在某個install.sh文件中並將其scp到遠程計算機。 然后使用sshexec命令源在遠程計算機上執行此文件。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.