bodewig 2003/03/11 05:15:44
Modified: src/main/org/apache/tools/ant/taskdefs defaults.properties src/main/org/apache/tools/ant/taskdefs/optional/ssh SSHBase.java Added: src/main/org/apache/tools/ant/taskdefs/optional/ssh SSHExec.java Log: New task <sshexec>. Submitted by: Robert Anderson <riznob at hotmail dot com> Revision Changes Path 1.141 +1 -0 ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties Index: defaults.properties =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties,v retrieving revision 1.140 retrieving revision 1.141 diff -u -r1.140 -r1.141 --- defaults.properties 6 Mar 2003 12:42:44 -0000 1.140 +++ defaults.properties 11 Mar 2003 13:15:43 -0000 1.141 @@ -182,6 +182,7 @@ chown=org.apache.tools.ant.taskdefs.optional.unix.Chown attrib=org.apache.tools.ant.taskdefs.optional.windows.Attrib scp=org.apache.tools.ant.taskdefs.optional.ssh.Scp +sshexec=org.apache.tools.ant.taskdefs.optional.ssh.SSHExec # deprecated ant tasks (kept for back compatibility) starteam=org.apache.tools.ant.taskdefs.optional.scm.AntStarTeamCheckOut 1.2 +3 -0 ant/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java Index: SSHBase.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHBase.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SSHBase.java 11 Mar 2003 13:00:31 -0000 1.1 +++ SSHBase.java 11 Mar 2003 13:15:43 -0000 1.2 @@ -102,6 +102,9 @@ this.host = host; } + public String getHost() { + return host; + } public void setFailonerror( boolean failure ) { failOnError = failure; 1.1 ant/src/main/org/apache/tools/ant/taskdefs/optional/ssh/SSHExec.java Index: SSHExec.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "Ant" and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.tools.ant.taskdefs.optional.ssh; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.TaskContainer; import org.apache.tools.ant.taskdefs.LogOutputStream; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Vector; import java.util.Enumeration; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.Session; /** * Executes a command on a remote machine via ssh. * @author Robert Anderson, [EMAIL PROTECTED] * @created February 2, 2003 * @since Ant 1.6 */ public class SSHExec extends SSHBase { private String command = null; private int maxwait = 30000; /** * Constructor for SSHExecTask. */ public SSHExec() { super(); } /** * Sets the command to execute on the remote host. * * @param command The new command value */ public void setCommand(String command) { this.command = command; } /** * The connection will be dropped after maxwait seconds. This is * sometimes useful when a connection may be flaky. Default is to * wait forever. * * @param maxwait The new maxwait value */ public void setMaxwait(int maxwait) { this.maxwait = maxwait; } /** * Execute the command on the remote host. * @exception BuildException Most likely a network error or bad * parameter. */ public void execute() throws BuildException { if (getHost() == null) { throw new BuildException("Host is null."); } if (getUserInfo().getName() == null) { throw new BuildException("Username is null."); } if (getUserInfo().getKeyfile() == null && getUserInfo().getPassword() == null) { throw new BuildException("Password and Keyfile are null."); } if (command == null) { throw new BuildException("Command is null."); } try { Session session = openSession(); ChannelExec channel=(ChannelExec) session.openChannel("exec"); channel.setCommand(command); channel.setInputStream(System.in); channel.setOutputStream(System.out); channel.connect(); } catch(Exception e){ if (getFailonerror()) { throw new BuildException(e); } else { log("Caught exception: " + e.getMessage(), Project.MSG_ERR); } } } }