public boolean ExecuteCommand(String execStr)
	{
	    //Runtime runtime = Runtime.getRuntime();
	    String outInfo="";
	    String tmp;
	    	  
	    InputStream errstream = null;
	    try
	    {
	    	//execute linux command
	        String[] args = new String[] {"sh", "-c", execStr};
	        
	        ProcessBuilder pb = new ProcessBuilder(args);
	        pb.redirectErrorStream(true);
	        
	    	//execute linux command 
	        //XXX set timer to kill this process in case it dies
	        
	        Process proc = pb.start();
	        proc.getOutputStream().close();
	        
	        errstream = proc.getErrorStream();
	        BufferedReader errstreambr = new BufferedReader(new InputStreamReader(errstream));
	       
	        InputStream inputstream = proc.getInputStream();
	        BufferedReader inputstreambr = new BufferedReader(new InputStreamReader(inputstream)); 
	        
	        String line;
	        while ((line = inputstreambr.readLine())!= null) 
	        {
	        	slog.append(line+"\n");
	        	
	        	Rectangle rect = slog.getVisibleRect();
	        	int a = slog.getScrollableBlockIncrement(rect, SwingConstants.VERTICAL, 1);
	        	rect.setLocation((int)rect.getX(), (int)rect.getY()+a);
	        	slog.scrollRectToVisible(rect);
	        	
	        	System.out.println(line);
	        }
  		
			while ((line = errstreambr.readLine())!=null) 
			{
				slog.append(line+"\n");
			
				Rectangle rect = slog.getVisibleRect();
				int a = slog.getScrollableUnitIncrement(rect, SwingConstants.VERTICAL, 1);
				slog.scrollRectToVisible(new Rectangle((int) rect.getX(), (int) rect.getY()+a, (int) rect.getWidth(), (int)rect.getHeight()));
				
				System.out.println(line);
			}
			//slog.paintImmediately(slog.getVisibleRect());
	  
	        try
	        {
	        	if (proc.waitFor() != 0)
	        	{
	        		tmp = "exit value = " + proc.exitValue();
	        		this.exerrstrlist.add(tmp);
	        		System.err.println("exit value = " + proc.exitValue());
	        		return false;
	        	}
	        }
	        catch (InterruptedException e)
	        {
	        	//this.exerrstrlist.add(e.toString());
	        	System.err.print(e);
	        	//e.printStackTrace();
	        	return false;
	        }
	    }
	    catch (IOException e)
	    {
	    	tmp = "exec error: " + e.getMessage();
	    	//this.exerrstrlist.add(tmp);
	    	System.out.println("exec error: " + e.getMessage());
	    	//e.printStackTrace();
	    	
	    	return false;
	    }
	    
	    
	    if (!outInfo.equals(""))
	    	this.exerrstrlist.add(outInfo);
	   
	    return true;
	}