001/*
002 * Copyright (c) 2004-2010 The Regents of the University of California.
003 * All rights reserved.
004 *
005 * '$Author: welker $'
006 * '$Date: 2010-05-06 05:21:26 +0000 (Thu, 06 May 2010) $' 
007 * '$Revision: 24234 $'
008 * 
009 * Permission is hereby granted, without written agreement and without
010 * license or royalty fees, to use, copy, modify, and distribute this
011 * software and its documentation for any purpose, provided that the above
012 * copyright notice and the following two paragraphs appear in all copies
013 * of this software.
014 *
015 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
016 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
017 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
018 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
019 * SUCH DAMAGE.
020 *
021 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
022 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
024 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
025 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
026 * ENHANCEMENTS, OR MODIFICATIONS.
027 *
028 */
029
030package org.kepler.ssh;
031
032/**
033 * This test connects to a host and deletes files matching the given mask. The
034 * code must refuse deleting all files in / or . or .. However, be very careful
035 * with the mask!!! This is rm -rf on remote machines. If host is 'local', the
036 * delete will be performed with java File operations. Relative pathes in the
037 * mask refers to home in remote machines, or to the current directory on local
038 * machine.
039 * 
040 * Arguments: user@host mask string (enclose in "" if contains space)
041 */
042public class TestDelete {
043
044        private static ExecInterface execObj;
045        private static String user;
046        private static String host;
047
048        public static void main(String[] arg) throws SshException,
049                        InterruptedException {
050
051                System.out.println("arg length = " + arg.length);
052                String target = arg.length > 0 ? arg[0] : "local";
053                String mask = arg.length > 1 ? arg[1] : "";
054
055                System.out.println("target machine = " + target + "\nmask = " + mask);
056
057                int atPos = target.indexOf('@');
058                if (atPos >= 0)
059                        user = target.substring(0, target.indexOf('@'));
060                else
061                        user = System.getProperty("user.name");
062
063                host = target.substring(atPos + 1);
064
065                boolean localExec = false;
066                if (host.equals("local") || host.trim().equals("")) {
067                        // local exec
068                        System.out.println("Execution mode: local using Java Runtime");
069                        execObj = new LocalExec();
070                        localExec = true;
071                } else {
072                        // create an SshExec object
073                        System.out.println("Execution mode: remote using ssh");
074                        execObj = new SshExec(user, host);
075                        // execObj.addIdentity(System.getProperty("user.home") +
076                        // File.separator +
077                        // ".ssh" + File.separator + "id_dsa");
078                }
079
080                try {
081                        boolean result = execObj.deleteFile(mask, true, true);
082                        System.out.println("Result: " + result);
083                } catch (ExecException e) {
084                        System.out.println("Error: " + e);
085                }
086
087                // if (!LocalExec) execObj.closeConnection();
088                System.exit(0);
089
090        }
091
092}