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.7 to jsch-0.1.9 and won't work with versions of jsch earlier than 0.1.7.
Attribute | Description | Required |
username | The username on the remote host to which you are connecting. | Yes |
command | The command to run on the remote host. | Yes |
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 ${user.home}/.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 |
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="${user.home}/.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="${user.home}/.ssh/id_dsa" command="touch somefile"/>
Security Note: Hard coding passwords and/or usernames
in sshexec task can be a serious security hole. Consider using variable
substituion 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
Copyright © 2003-2004 The Apache Software Foundation. All rights Reserved.