SSHEXEC Task

## SSHEXEC

### Description

since Ant 1.6

Runs a command on a remote machine running SSH daemon.

Note: This task depends on external libraries not included in the Ant distribution. See Library Dependencies for more information. This task has been tested with jsch-0.1.29 and above and won't work with versions of jsch earlier than 0.1.28.

See also the scp task

### Parameters

Attribute | Description | Required
host | The hostname or IP address of the remote host to which you wish to connect. | Yes
username | The username on the remote host to which you are connecting. | Yes
command | The command to run on the remote host. | Either this or commandResource must be set
commandResource | The resource (file) that contains the commands to run on the remote host. | Either this or command must be set
port | The port to connect to on the remote host. | No, defaults to 22.
trust | This trusts all unknown hosts if set to yes/true. Note If you set this to false (the default), the host you connect to must be listed in your knownhosts file, this also implies that the file exists. | No, defaults to No.
knownhosts | This sets the known hosts file to use to validate the identity of the remote host. This must be a SSH2 format file. SSH1 format is not supported. | No, defaults to /home/kev/.ssh/known_hosts.
failonerror | Whether to halt the build if the command does not complete successfully. | No; defaults to true.
password | The password. | Not if you are using key based authentication or the password has been given in the file or todir attribute.
keyfile | Location of the file holding the private key. | Yes, if you are using key based authentication.
passphrase | Passphrase for your private key. | No, defaults to an empty string.
output | Name of a file to which to write the output. | No
append | Whether output file should be appended to or overwritten. Defaults to false, meaning overwrite any existing file. | No
outputproperty | The name of a property in which the output of the command should be stored. | No
timeout | Stop the command if it doesn't finish within the specified time (given in milliseconds). Defaults to 0 which means "wait forever". | No

### Examples

Run a command on a remote machine using password authentication

      <sshexec host="somehost"
    	username="dude"
    	password="yo"
    	command="touch somefile"/>

Run a command on a remote machine using key authentication

      <sshexec host="somehost"
    	username="dude"
    	keyfile="/home/kev/.ssh/id_dsa"
    	passphrase="yo its a secret"
    	command="touch somefile"/>

Run a command on a remote machine using key authentication with no passphrase

      <sshexec host="somehost"
    	username="dude"
    	keyfile="/home/kev/.ssh/id_dsa"
    	command="touch somefile"/>

Run a set of commands from a command resource (file) on a remote machine using key authentication with no passphrase

      <sshexec host="somehost"
    	username="dude"
    	keyfile="/home/kev/.ssh/id_dsa"
    	commandResource="to_run"/>

Security Note: Hard coding passwords and/or usernames in sshexec task can be a serious security hole. Consider using variable substitution and include the password on the command line. For example:

      <sshexec host="somehost"
    	username="${username}"
    	password="${password}"
    	command="touch somefile"/>

Invoke ant with the following command line:

        ant -Dusername=me -Dpassword=mypassword target1 target2