* This class can be used to execute a system command from a Java application.
* See the documentation for the public methods of this class for more
* information.
- *
+ *
* Documentation for this class is available at this URL:
- *
+ *
* http://devdaily.com/java/java-processbuilder-process-system-exec
- *
+ *
* Copyright 2010 alvin j. alexander, devdaily.com.
- *
+ *
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
- *
+ *
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
* Please see the following page for the LGPL license:
* http://www.gnu.org/licenses/lgpl.txt
- *
+ *
*/
package org.forester.util;
public class SystemCommandExecutor {
private final List<String> _command_information;
- private final String _admin_password;
private ThreadedStreamHandler _input_stream_handler;
private ThreadedStreamHandler _error_stream_handler;
private final static boolean DEBUG = false;
/**
* Pass in the system command you want to run as a List of Strings, as shown here:
- *
+ *
* List<String> commands = new ArrayList<String>();
* commands.add("/sbin/ping");
* commands.add("-c");
* commands.add("www.google.com");
* SystemCommandExecutor commandExecutor = new SystemCommandExecutor(commands);
* commandExecutor.executeCommand();
- *
+ *
* Note: I've removed the other constructor that was here to support executing
* the sudo command. I'll add that back in when I get the sudo command
* working to the point where it won't hang when the given password is
*/
public SystemCommandExecutor( final List<String> command_information ) {
if ( ( command_information == null ) || command_information.isEmpty() ) {
- throw new IllegalArgumentException( "The commandInformation is required." );
+ throw new IllegalArgumentException( "command information is required" );
}
checkCmdFile( new File( command_information.get( 0 ) ) );
_command_information = command_information;
- _admin_password = null;
}
public static boolean isExecuteableFile( final File path_to_cmd_f ) {
// these need to run as java threads to get the standard output and error from the command.
// the inputstream handler gets a reference to our stdOutput in case we need to write
// something to it, such as with the sudo command
- _input_stream_handler = new ThreadedStreamHandler( inputStream, stdOutput, _admin_password );
+ _input_stream_handler = new ThreadedStreamHandler( inputStream, stdOutput );
_error_stream_handler = new ThreadedStreamHandler( errorStream );
- // TODO the inputStreamHandler has a nasty side-effect of hanging if the given password is wrong; fix it
_input_stream_handler.start();
_error_stream_handler.start();
// TODO a better way to do this?
// generated by process.waitFor() call
throw e;
}
- // finally {
+ // finally {
return exit_value;
- // }
+ // }
}
/**