2012-03-21 15 views
2

私は、新しくインストールされたサーバを起動するスクリプトを実行しようとすると、私の問題が来るJenkinsでant sshexecを使用してスクリプトを実行すると、作業ディレクトリをどのように変更できますか?

のopenSUSE 11にTomcatを使用して、私が正常にサーバーをインストールするsshexecタスクを使用するAntターゲットを持っています。

<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を見つけると、私は、それが配置されているフォルダからスクリプトを実行する必要があるということです。私は、rootとしてこれを実行する必要があるので、私はこのようタスクを使用 その場所から。パス "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で変更する必要があるかもしれないことを読んだ。しかし、私は短いアップこの長い質問を合計する、だから... ...方法や場所

を知らない:

は、私が正しいのTomcatからrootとしての私のstartup.shを実行できるようにするために行うには何が必要です/ binフォルダにJenkinsで実行されるantスクリプトがありますか?

+0

'sshhexecに' output = "sshlog.txt" verbose = "true" 'を追加し、_sshlog.txt_の内容を投稿できますか? –

+0

また、私は 'CommandResource'ファイル内のすべての行が別のサブシェルで実行されるという疑いがあります。 –

+0

入力いただきありがとうございます。私はoutput = "sshlog.txt" verbose = "true"をタスクに追加し、再度実行しました。残念ながら、sshlog.txtは空です。 どちらが答えでしょうか... – Stefant

答えて

0

私も同じ問題に直面しました。 cdコマンドはsshexecからは機能しません。代わりに、すべてのコマンドをいくつかのinstall.shファイルに入れ、それをリモートマシンにscpします。次に、sshexec commandresourceを使用して、リモートマシン上でこのファイルを実行します。お役に立てれば。私は同じ行に行われたときに「CD」は、働くことがわかってきました

+0

ありがとう。私は最後にこの方法を使用しませんでしたが、それもうまくいくと思います。 – Stefant

8

...

<sshexec host="${tss.hostname}" 
username="${username}" 
password="${password}" 
trust="true" 
Command="(cd /usr/local/bin/foo/bar/tomcat/bin; startup.sh)" 
failonerror="false"/> 

私は実際にシェルスクリプトを実行するために、これを使用していないが、私はしばしばアリ変更ディレクトリを持っていますGITコマンドを実行します。

+0

クール、私はもっと多くのsshexecのことをする必要があるとき、私はこれを試してみます。おかげさまで – Stefant

関連する問題