ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nick Neuberger <Nick.Neuber...@sncc.com>
Subject RE: Sshexec fail on starting a service (websphere)
Date Thu, 11 Mar 2004 15:24:49 GMT
This is a post to resolve the issue I was having.  It was determined that
the problem lies in the websphered script.  It uses a command like prompting
mechanism that stdin may be left open after the service is started.  Thus
causing the channel to never close.  

jcraft (ymnk) suggested to do the following: command="sudo /bin/sh
/etc/init.d/websphered start < /dev/null"

I asked the author of jsch and ultimately this is the resulting ant task
that worked properly for me.  I believe it has something to do with the
websphered script.

First, thank you Rob Anderson and ymnk@jcraft.com for helping me!!!!  Much
applaud for your open-source contribs.  Kudos..

Here is a Working copy of my ANT tasks I used.  Note I'm using sudo command
to not allow user to login in as root.  I think websphere is required to
startup as root.

	<target name="stopServiceWebSphered">
		<echo message="****** Stopping WebSphereD Service...
******"/>
		<sshexec trust="true" timeout="240000"
host="${targetMachine}" username="${user.id}" password="${password}"
command="sudo /sbin/service websphered stop"/>
	</target>

	<target name="startServiceWebSphered">
		<echo message="****** Starting WebSphereD Service...
******"/>
		<sshexec trust="true" timeout="240000"
host="${targetMachine}" username="${user.id}" password="${password}"
command="sudo /bin/sh /etc/init.d/websphered start &lt; /dev/null"/>
	</target>
	<target name="testWebSpherePort9080">
		<echo message="****** Testing WebSphere Port 9080 on
${targetMachine}... ******"/>
		<waitfor maxwait="5" maxwaitunit="minute" checkevery="700"
timeoutproperty="websphereTimeout">
		    <http url="http://${targetMachine}:9080/app1/"/>
		</waitfor>
		<fail if="websphereTimeout" message="WebSphere Port IS NOT
available yet on ${targetMachine}"/>
		<echo message="****** WebSphere Port 9080 is READY on
${targetMachine}... ******"/>
	</target>

	<target name="testHttpServerPort80">
		<echo message="****** Testing Http Server Port 80 on
${targetMachine}... ******"/>
		<waitfor maxwait="2" maxwaitunit="minute" checkevery="500"
timeoutproperty="httpServerTimeout">
		    <http url="http://${targetMachine}/app1/"/>
		</waitfor>
		<fail if="httpServerTimeout" message="Http Server Port IS
NOT available yet on ${targetMachine}"/>
		<echo message="****** Http Server Port 80 is READY on
${targetMachine}... ******"/>
	</target>


Thanks,

Nick Neuberger



> -----Original Message-----
> From: Nick Neuberger [mailto:Nick.Neuberger@sncc.com]
> Sent: Thursday, March 04, 2004 12:35 PM
> To: 'Ant Users List'
> Subject: RE: Sshexec fail on starting a service (websphere)
> 
> 
> Yes.  The command exits properly...  I never have to force 
> the script to
> end.  It ends properly.  Just not via ant/sshexec.
> 
> [user@machine1 etc]# /etc/init.d/websphered stop
> Shutting down websphered:                                  [  OK  ]
> [user@machine1 etc]# /etc/init.d/websphered start
> Starting websphered:                                       [  OK  ]
> [user@machine1 etc]#
> 
> I don't think the problem is sshd.  At least it doesn't seem to be the
> problem.  I'm using ssh/putty.exe on windows to connect to 
> the server.  I
> may be able to try the jsch/ssh client and connect and run 
> the same command.
> see if it hangs then.  If you no what I mean.
> 
> BTW - I'm using jsch-0.1.12.jar   Maybe there is a new 
> version of it, that
> may help...Thoughts??
> 
> The sshexec mod that I suggested is basically passively 
> fixing the problem.
> I agree with you....making a mod the SshExec doesn't really 
> fix the problem.
> 
> 
> It would only allow the ant developer to "pass" or "fail" based on a
> specific criteria received from the output.  When I first 
> started using the
> task, there was this disconnect that I had about the task.  I 
> still believe
> a change such as this would aid in making the sshexec task easier for
> developers.
> 
> ie. THIS IS PURELY AN example.
> <sshexec command="echo $PATH"
> passon="/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin"
> failon="/usr/local/bin"/>
> 
> The above "echo" command will always pass an exit status 0.  
> There is no way
> of determine a pass or fail without having to write a bash 
> script on the
> server and it send the pass / fail signal.
> 
> Or at least a sub task within SSHExec to read the output and 
> pass / fail
> based on another ant task. ifdef....etc.
> 
> Thoughts?
> 
> Nick Neuberger
> 
> 
> 
> -----Original Message-----
> From: Anderson, Rob (Global Trade) [mailto:Rob.Anderson@nike.com]
> Sent: Thursday, March 04, 2004 11:32 AM
> To: Ant Users List
> Cc: dev@ant.apache.org
> Subject: RE: Sshexec fail on starting a service (websphere)
> 
> 
> Perhaps the problem is not with the script, but with the sshd 
> running on the
> remote machine. Are you able to get an exit status 0 from the 
> following
> command?
> 
> ssh user@host "/etc/init.d/websphere start"
> 
> Does this command exit properly once the server is started?
> 
> I am reluctant to approve of edits to the sshexec task that 
> are specific to
> a single command that users might run on the remote machine. 
> I think the
> commiters will agree. 
> 
> -Rob Anderson
> 
> > -----Original Message-----
> > From: Nick Neuberger [mailto:Nick.Neuberger@sncc.com]
> > Sent: Thursday, March 04, 2004 7:26 AM
> > To: 'Ant Users List'
> > Subject: RE: Sshexec fail on starting a service (websphere)
> > 
> > 
> > "The remote script should background the process and exit"
> > 
> > I'm not too good with editing bash (websphered) scripts, but 
> > it sure seems
> > like the script is sending a success message.  This is a 
> cookie cutter
> > script from ibm/websphere.  Here is a snippet of the script.
> > 
> >     start)
> >     echo -n "Starting websphered: "
> >     # /opt/WebSphere/AppServer/bin/startServer.sh $args > /dev/null
> >     $START_SCRIPT $args >/dev/null
> >     RETVAL=$?
> >     if [ $RETVAL = 0 ]; then
> >          touch /var/lock/subsys/websphered
> >          echo_success
> >          else
> >          echo_failure
> >          fi
> >     echo
> >     ;;
> > 
> > These scripts work perfectly fine outside of ant / sshexec?  
> > Shouldn't there
> > be a change inside sshexec/jsch.  The script properly exits 
> > when called
> > directly just not from ant/sshexec.  The proper response is 
> > "echo_success".
> > 
> > Do you see my delimma?   Thats why I'm considering a change 
> > to SshExec.java.
> > Wait for the timeout but allow the "ant" developer to easily 
> > determine if
> > its a fail / success as well.
> > 
> > Thanks for the response!!!
> > 
> > Nick Neuberger
> > 
> > 
> > -----Original Message-----
> > From: Anderson, Rob (Global Trade) [mailto:Rob.Anderson@nike.com]
> > Sent: Wednesday, March 03, 2004 5:04 PM
> > To: Ant Users List
> > Subject: RE: Sshexec fail on starting a service (websphere)
> > 
> > 
> > serverStart.sh starts the Admin server, correct? I would 
> > suggest leaving the
> > admin server running unless it is absolutely necessary to 
> > shut it down. You
> > could probably just stop/start your Application Server 
> instance(s), or
> > perhaps even just your Enterprise Appliations, with a wscp.sh 
> > one-liner.
> > 
> > If the script you are running never exits becuase it calls a 
> > foreground
> > process that continues to run, the expected behavior of ssh, 
> > sshexec, and
> > jsch is a timeout. The remote script should background the 
> > process and exit,
> > returning an exit status to sshexec. This exit status is used 
> > to determine
> > success or failure. Ssh, sshexec, and jsch are not supposed 
> > to "notice" that
> > something has been started successfully, that should be up to 
> > your script to
> > return the proper exit status.
> > 
> > -Rob Anderson
> > 
> > > -----Original Message-----
> > > From: Nick Neuberger [mailto:Nick.Neuberger@sncc.com]
> > > Sent: Wednesday, March 03, 2004 2:40 PM
> > > To: 'Ant Users List'
> > > Subject: RE: Sshexec fail on starting a service (websphere)
> > > 
> > > 
> > > I maybe figured out why its still hanging.  When the 
> > > websphered script is
> > > called it invokes serverStart.sh then it invokes actual java 
> > > process.  This
> > > process never dies, because the server is now running.
> > > 
> > > but for some reason sshexec /or jsch is not noticing that the 
> > > service is
> > > started...aka  [ OK ] from the websphered script.
> > > 
> > > Maybe its an issue with sshexec or probably jsch.
> > > http://cvs.apache.org/viewcvs.cgi/ant/src/main/org/apache/tool
> > > s/ant/taskdefs
> > > /optional/ssh/SSHExec.java?rev=1.14&view=auto
> > > The code SSHExec waits until it gets an EOF from the channel.
> > >  while (!channel.isEOF()) {
> > > 
> > > It sure would be nice to based on the output what is 
> > recieved from the
> > > channel, to determine from their if it failed or not.
> > > 
> > > Ie....  >   [sshexec] Shutting down websphered: 
> > > >   [sshexec] [  OK  ]
> > > 
> > > This <websphered> script is called on boot of the server.  It 
> > > works fine
> > > outside of ant / wsad
> > > 
> > > Would this be a good suggestion for the SSHExec task?  I can 
> > > write the code,
> > > if necessary.  It doesn't look to complicated.
> > > 
> > > Thoughts....from ANT developers.
> > > 
> > > Thanks again.
> > > 
> > > Nick Neuberger
> > > 
> > > 
> > > -----Original Message-----
> > > From: Anderson, Rob (Global Trade) [mailto:Rob.Anderson@nike.com]
> > > Sent: Wednesday, March 03, 2004 3:22 PM
> > > To: Ant Users List
> > > Subject: RE: Sshexec fail on starting a service (websphere)
> > > 
> > > 
> > > Depending on what is running in your WebSphere environment, 
> > > it may take a
> > > really long time to start. Try timing how long it takes to 
> > > start up and then
> > > adjust your timeout attribute accordingly. Time it from remote...
> > > 
> > > time ssh user@host "/etc/init.d/websphere start"
> > > 
> > > Another option is to background the start command, but then 
> > > ant will exit
> > > successfully whether or not websphere starts successfully.
> > > 
> > > -Rob Anderson
> > > 
> > > > -----Original Message-----
> > > > From: Nick Neuberger [mailto:Nick.Neuberger@sncc.com]
> > > > Sent: Wednesday, March 03, 2004 10:01 AM
> > > > To: user@ant.apache.org
> > > > Subject: Sshexec fail on starting a service (websphere)
> > > > 
> > > > 
> > > > I'm trying to call start a service and the service actually 
> > > > starts but ant
> > > > always fails on timeout from the task.  Other services are 
> > > > working fine such
> > > > as ibmhttpd service.
> > > > 
> > > > I'm running ANT Build script on win2k and server is 
> redhat linux.
> > > > 
> > > > Any thoughts?  I think it might have something to do with the 
> > > > websphered
> > > > script in /etc/rc.d/init.d/
> > > > 
> > > > Snippet of output.
> > > > 
> > > > stopServiceWebSphered:
> > > >      [echo] ****** Stopping WebSphereD Service... ******
> > > >   [sshexec] Connecting to machine1:22
> > > >   [sshexec] Shutting down websphered: 
> > > >   [sshexec] [  OK  ]
> > > > 
> > > > startServiceWebSphered:
> > > >      [echo] ****** Starting WebSphereD Service... ******
> > > >   [sshexec] Connecting to machine1:22
> > > >   [sshexec] Starting websphered: 
> > > >   [sshexec] [  OK  ]
> > > > 
> > > > BUILD FAILED
> > > > C:\workspace\v5.1\imsii\sncc-ims-build\deploy.xml:50: 
> > > Following error
> > > > occured while executing this line
> > > > C:\workspace\v5.1\imsii\sncc-ims-build\deploy.xml:79: 
> > Timeout period
> > > > exceeded, connection dropped.
> > > > 
> > > > Total time: 6 minutes 35 seconds
> > > > 
> > > > Snipped of ANT script.
> > > > 
> > > > 	<target name="stopServiceHttpServer">
> > > > 		<echo message="****** Stopping Service 
> Http Server...
> > > > ******"/>		
> > > > 		<sshexec trust="true" timeout="15000"
> > > > host="${targetMachine}" username="${user.id}" 
> > password="${password}"
> > > > command="sudo /sbin/service ibmhttpd stop"/>
> > > > 	</target>
> > > > 
> > > > 	<target name="startServiceHttpServer">
> > > > 		<echo message="****** Starting Service 
> Http Server...
> > > > ******"/>
> > > > 		<sshexec trust="true" timeout="15000"
> > > > host="${targetMachine}" username="${user.id}" 
> > password="${password}"
> > > > command="sudo /sbin/service ibmhttpd start"/>
> > > > 	</target>
> > > > 
> > > > 	<target name="stopServiceWebSphered">
> > > > 		<echo message="****** Stopping 
> WebSphereD Service...
> > > > ******"/>
> > > > 		<sshexec trust="true" timeout="240000"
> > > > host="${targetMachine}" username="${user.id}" 
> > password="${password}"
> > > > command="service websphered stop"/>
> > > > 	</target>
> > > > 
> > > > 	<target name="startServiceWebSphered">
> > > > 		<echo message="****** Starting 
> WebSphereD Service...
> > > > ******"/>
> > > > 		<sshexec trust="true" timeout="320000"
> > > > host="${targetMachine}" username="${user.id}" 
> > password="${password}"
> > > > command="service websphered start"/>
> > > > 	</target>
> > > > 
> > > > 
> > > > Thanks ahead..
> > > > 
> > > > Nick
> > > > 
> > > > 
> > > > - - - - - - 
> > > > This e-mail message is intended only for the use of the 
> > > > individual or entity
> > > > identified in the alias address of this message and may 
> > > > contain confidential
> > > > and privileged information. Any unauthorized review, use, 
> > > > disclosure or
> > > > distribution of this e-mail message is strictly prohibited. 
> > > > If you have
> > > > received this e-mail message in error, please notify the 
> > > > sender immediately
> > > > by reply e-mail and delete this message from your system. 
> > Thank you.
> > > > 
> > > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> > > > For additional commands, e-mail: user-help@ant.apache.org
> > > > 
> > > > 
> > > > 
> > > 
> > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> > > For additional commands, e-mail: user-help@ant.apache.org
> > > 
> > > 
> > > - - - - - - 
> > > This e-mail message is intended only for the use of the 
> > > individual or entity
> > > identified in the alias address of this message and may 
> > > contain confidential
> > > and privileged information. Any unauthorized review, use, 
> > > disclosure or
> > > distribution of this e-mail message is strictly prohibited. 
> > > If you have
> > > received this e-mail message in error, please notify the 
> > > sender immediately
> > > by reply e-mail and delete this message from your system. 
> Thank you.
> > > 
> > > 
> > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> > > For additional commands, e-mail: user-help@ant.apache.org
> > > 
> > > 
> > > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> > For additional commands, e-mail: user-help@ant.apache.org
> > 
> > 
> > - - - - - - 
> > This e-mail message is intended only for the use of the 
> > individual or entity
> > identified in the alias address of this message and may 
> > contain confidential
> > and privileged information. Any unauthorized review, use, 
> > disclosure or
> > distribution of this e-mail message is strictly prohibited. 
> > If you have
> > received this e-mail message in error, please notify the 
> > sender immediately
> > by reply e-mail and delete this message from your system. Thank you.
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> > For additional commands, e-mail: user-help@ant.apache.org
> > 
> > 
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
> 
> 
> - - - - - - 
> This e-mail message is intended only for the use of the 
> individual or entity
> identified in the alias address of this message and may 
> contain confidential
> and privileged information. Any unauthorized review, use, 
> disclosure or
> distribution of this e-mail message is strictly prohibited. 
> If you have
> received this e-mail message in error, please notify the 
> sender immediately
> by reply e-mail and delete this message from your system. Thank you.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
> 


- - - - - - 
This e-mail message is intended only for the use of the individual or entity
identified in the alias address of this message and may contain confidential
and privileged information. Any unauthorized review, use, disclosure or
distribution of this e-mail message is strictly prohibited. If you have
received this e-mail message in error, please notify the sender immediately
by reply e-mail and delete this message from your system. Thank you.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message