Groovy executing shell commands on remote server

groovyssh

I have an issue about executing shell commands on a remote server.

I'm trying various solutions and I have one working but it is not optimized in terms of maintenance : I use a batch file that launches putty which connects to the remote server ans sends the command.

ie. in groovy :

def batchFile = "C:\\Validation\\Tests_Auto\\Scripts\\remote_process\\setOldDate.bat"
Runtime.runtime.exec(batchFile)

and in my batch file :

c:
cd C:\Validation\Tests_Auto\Scripts\remote_process\
putty.exe -ssh root@xx.xx.xx.xx -pw **** -m "C:\Validation\Tests_Auto\Scripts\remote_process\setOldDate.txt"

setOldDate.txt contains the command date -s @1522018800

This works. However I'd like to launch it in a cleaner way, either avoiding the use of text file for the command or, better, avoiding using putty.
I tried several another way to do the same thing but it doesn't work. I think I'm not too far but I need a little help.

I tried to launch a direct command via ssh:

Runtime.getRuntime().exec('"c:\\Program Files\\OpenSSH\\bin\\ssh.exe" root:****@xx.xx.xx.xx date -s @1522018800')

I'd be grateful if anyone could help

thanks

Best Answer

@Grab(group='com.jcraft', module='jsch', version='0.1.54')

def ant = new AntBuilder()
ant.sshexec( host:"somehost", username:"dude", password:"yo", command:"touch somefile" )

for other sshexec and scp tasks parameters see doc:

https://ant.apache.org/manual/Tasks/sshexec.html

https://ant.apache.org/manual/Tasks/scp.html

for soapui

this method using apache ant + jsch-0.1.54.jar

the only way i know for soapui:

download the following libraries and put them into soapui\bin\endorsed directory (create the endorsed directory)

edit the soapui\bin\soapui.bat and add the following line where other JAVA_OPTS are defined:

set JAVA_OPTS=%JAVA_OPTS% -Djava.endorsed.dirs="%SOAPUI_HOME%endorsed"

that's because ant libs must be loaded before groovy.

then the code above should work in soapui (except @Grab)

Alternatively you can download only jsch-XXX.jar into existing soapui\bin\ext directory and use jsch library directly from groovy

see examples: http://www.jcraft.com/jsch/examples/

or search for groovy jsch examples