Hi,

I have a jenkins project whose "Execute shell" command consists of this:


set -e  # Exit immediately if a simple command exits with a non-zero status
set -x verbose


export PKG="annotation"
export SUFFIX="zip"

ssh -o StrictHostKeyChecking=no -i $SSH_KEY jenk...@docbuilder.mydomain.org 
"rm -f ~/repository/$PKG/*.$SUFFIX"

If I run this script manually on the windows box, it works fine. 

That ssh command looks syntactically valid to me (SSH_KEY is defined in the 
node config) but it fails in jenkins. Since I have verbosity turned on this 
is the command I see (along with its output) in the jenkins build output:

+ ssh -o StrictHostKeyChecking=no -i c:/jenkins/docbuilder 
jenk...@docbuilder.mydomain.org rm -f ~/repository/annotation/*.zip
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]


So it looks like the quotes in my command were somehow stripped. I think those 
quotes are needed in order for ssh to understand its arguments (otherwise the * 
is expanded before it gets to ssh, and so on). 


How can I fix that? I tried escaping the quotes with a backslash and then the 
command (when echoed) looked like this in the jenkins output:


+ ssh -o StrictHostKeyChecking=no -i c:/jenkins/docbuilder 
jenk...@docbuilder.mydomain.org "rm -f ~/repository/annotation/*.zip"

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]


So the quotes are now present but there is still something wrong with the 
command as seen by ssh.

If I copy and paste that command directly into an sh window on the windows node 
(a cygwin terminal window where I have exported SSH_KEY), it works.


Another thing I should mention is that I'm logged into the windows node as 
Administrator, but the jenkins slave is running as nt authority\system, a user 
who does not have the right to log on interactively. 


Any ideas? Thanks.








-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to