[JIRA] (JENKINS-60079) sshScript does not run a batch file on a windows remote

5 views
Skip to first unread message

jielpe-cblv38@protonmail.com (JIRA)

unread,
Nov 6, 2019, 10:22:05 AM11/6/19
to jenkinsc...@googlegroups.com
jlpinardon created an issue
 
Jenkins / Bug JENKINS-60079
sshScript does not run a batch file on a windows remote
Issue Type: Bug Bug
Assignee: Naresh Rayapati
Components: ssh-steps-plugin
Created: 2019-11-06 15:21
Environment: Jenkins master 2.164.3 on linux, linux slave as a docker image provisioned with K8S and remote Windows.
Slave is connected to master through JNLP.
Priority: Major Major
Reporter: jlpinardon

I create a simple batch file named script.bat with a dir command within.
I want to execute it from a Linux slave using the sshScript step with :
sshScript remote: remote, script:'script.bat'

It fails and display a stack trace (see below).

As checking steps :

  • The same script.bat correctly runs with a ssh command executed from a git bash on my laptop.
  • Also, it runs correctly with sshPut + sshCommand (and an awfull sleep workaround to get stdout) within a pipeline.
  • sshScript, with a .sh file on a remote Linux machine also runs correctly

 

Here is the trace :

Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from 10.225.94.76/10.225.94.76:52554
		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1743)
		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
		at hudson.remoting.Channel.call(Channel.java:957)
		at org.jenkinsci.plugins.sshsteps.steps.ScriptStep$Execution.run(ScriptStep.java:81)
		at org.jenkinsci.plugins.sshsteps.util.SSHStepExecution.lambda$start$0(SSHStepExecution.java:84)
		at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
		at java.util.concurrent.FutureTask.run(FutureTask.java:266)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
org.hidetake.groovy.ssh.session.BadExitStatusException: Command returned exit status 1: /bin/sh
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:255)
	at org.hidetake.groovy.ssh.session.execution.Command$Helper.execute(Command.groovy:52)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:151)
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:91)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:141)
	at org.hidetake.groovy.ssh.session.execution.Command$Trait$Helper.execute(Command.groovy:30)
	at org.hidetake.groovy.ssh.session.execution.Command$Trait$Helper$execute$0.call(Unknown Source)
	at org.hidetake.groovy.ssh.session.SessionHandler.execute(SessionHandler.groovy)
	at org.hidetake.groovy.ssh.session.execution.Command$execute.call(Unknown Source)
	at org.hidetake.groovy.ssh.session.execution.Script$Trait$Helper.executeScript(Script.groovy:25)
	at org.hidetake.groovy.ssh.session.execution.Script$Trait$Helper$executeScript$0.call(Unknown Source)
	at org.hidetake.groovy.ssh.session.SessionHandler.executeScript(SessionHandler.groovy)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:169)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
	at org.hidetake.groovy.ssh.session.execution.Script$Trait$Helper.executeScript(Script.groovy)
	at org.hidetake.groovy.ssh.session.execution.Script$Trait$Helper$executeScript.call(Unknown Source)
	at org.hidetake.groovy.ssh.session.SessionHandler.executeScript(SessionHandler.groovy)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
	at org.jenkinsci.plugins.sshsteps.SSHService$_executeScriptFromFile_closure4$_closure14.doCall(SSHService.groovy:198)
	at org.jenkinsci.plugins.sshsteps.SSHService$_executeScriptFromFile_closure4$_closure14.doCall(SSHService.groovy)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:57)
	at org.hidetake.groovy.ssh.util.Utility.callWithDelegate(Utility.groovy:17)
	at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46)
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:102)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:104)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:214)
	at org.hidetake.groovy.ssh.session.SessionTask.wetRun(SessionTask.groovy:64)
	at org.hidetake.groovy.ssh.session.SessionTask.call(SessionTask.groovy:48)
	at java_util_concurrent_Callable$call.call(Unknown Source)
	at org.hidetake.groovy.ssh.core.Service.run(Service.groovy:81)
	at org.hidetake.groovy.ssh.core.Service$run$0.call(Unknown Source)
	at org.jenkinsci.plugins.sshsteps.SSHService.executeScriptFromFile(SSHService.groovy:196)
	at org.jenkinsci.plugins.sshsteps.steps.ScriptStep$Execution$ScriptCallable.execute(ScriptStep.java:95)
	at org.jenkinsci.plugins.sshsteps.util.SSHMasterToSlaveCallable.call(SSHMasterToSlaveCallable.java:32)
	at hudson.remoting.UserRequest.perform(UserRequest.java:212)
	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
	at hudson.remoting.Request$2.run(Request.java:369)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
	at java.lang.Thread.run(Thread.java:748)

Strangely, the "Also" follows... nothing else in terms of error or exception.
And there is a strange message involving sh :
org.hidetake.groovy.ssh.session.BadExitStatusException: Command returned exit status 1: /bin/sh

Add Comment Add Comment
 
This message was sent by Atlassian Jira (v7.13.6#713006-sha1:cc4451f)
Atlassian logo

naresh.rayapati@gmail.com (JIRA)

unread,
Nov 6, 2019, 10:39:03 AM11/6/19
to jenkinsc...@googlegroups.com
Naresh Rayapati commented on Bug JENKINS-60079
 
Re: sshScript does not run a batch file on a windows remote

I don't think Linux can execute windows commands yet unless if the Linux that you are running is special has some sort of that functionality.

If you are trying to run this pipeline on windows node make sure it has ssh server installed as it doesn't come along by default. And also take note this plugin is not tested or not targetted to run anything on windows yet.

jielpe-cblv38@protonmail.com (JIRA)

unread,
Nov 6, 2019, 12:04:03 PM11/6/19
to jenkinsc...@googlegroups.com

Well, perhaps I have not been clear enough.
The node is a linux machine, but the remote machine to which I want to run a file through ssh is a Windows machine.
As I said, I can run the bat file on the windows machine running ssh on the command line.
And the same bat file runs OK when I run two ssh steps : sshPut + sshCommand.
But it fails to execute the bat with a sshScript.

Reply all
Reply to author
Forward
0 new messages