private void executeSSH() throws Exception {
		SSHClient sshClient = null;
		Session session = null;
		try {
			sshClient = createSSHClient();
			
			String sandbox = scheduler.getProperties().getProperty(Configuration.SSH_SANDBOX);
			session = sshClient.startSession();
			Command createSandboxCommand = session.exec("mkdir -p " + sandbox);
			createSandboxCommand.join();
			session.close();
			
			for (IOOperation initOperation : task.getInitOperations()) {
				SCPFileTransfer ft = sshClient.newSCPFileTransfer();
				ft.upload(new FileSystemFile(new File(initOperation.getLocal())), 
						sandbox + "/" + initOperation.getRemote());
			}
			
			session = sshClient.startSession();
			Command command = session.exec("cd " + sandbox + " ;" + task.getRemote());
			command.join();
			Integer exitStatus = command.getExitStatus();
//			List<String> stdOut = IOUtils.readLines(command.getInputStream());
			List<String> stdErr = IOUtils.readLines(command.getErrorStream());
			
			if (exitStatus != 0) {
				throw new Exception(stdErr.toString());
			}
			
			for (IOOperation finalOperation : task.getFinalOperations()) {
				SCPFileTransfer ft = sshClient.newSCPFileTransfer();
				ft.download(sandbox + "/" + finalOperation.getRemote(), 
						new FileSystemFile(new File(finalOperation.getLocal())));
			}
			
		} catch (Exception e) {
			throw e;
		} finally {
			if (session != null) {
				if (session.isOpen()) {
					session.close();
				}
			}
			if (sshClient != null) {
				sshClient.disconnect();
			}
		}
	}