Class Expect


  • public class Expect
    extends java.lang.Object
    Simple helper class for handling output of a process. It works similar as the tcl expect command.

    Example

       
        char [] password = null;
        String username = null;
        long timeout = 60 * 1000;
        String [] cmd = new String[] { "su", "username", "-c" , "ls" };
    
        Expect expect = new Expect(cmd);
    
        expect.addHandler(new ExpectPasswordHandler("password: ", password));
    
        expect.addHandler(new ExpectHandler() {
    
            // print every line after the password question to System.out
            public void handle(Expect expect, ExpectBuffer buffer) {
     
                String line = buffer.consumeLine();
                if(line != null) {
                   System.out.println(line);
                } 
    
            }
        });
    
        if(expect.exec(timeout) == 0 ) {
           System.out.println("ls as user " + username + " successfully executed");
        }
    
     
    • Constructor Summary

      Constructors 
      Constructor Description
      Expect()  
      Expect​(java.lang.String[] cmd)
      Creates a new instance of Expect
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(ExpectHandler handler)
      Add a new expect handler.
      java.util.List command()  
      java.util.List env()  
      int exec​(long timeout)
      Execute the command and call the registered handlers.
      void flush()
      Flush stdin
      void print​(boolean b)
      print a boolean to stdin
      void print​(char c)
      print a char to stdin.
      void print​(char[] s)
      print a char arrary to stdin !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of s is written to the logger.
      void print​(double d)
      print a double to stdin
      void print​(float x)
      print a float to stdin.
      void print​(int i)
      print an integer to stdin
      void print​(long l)
      print a long to stdin
      void print​(java.lang.Object obj)
      print an object to stdin
      void print​(java.lang.String s)
      print a string to stdin
      void println()
      print linefeed to stdin.
      void println​(boolean x)
      print a boolean to stdin (with linefeed)
      void println​(char x)
      print a char to stdin.
      void println​(char[] x)
      print a char arrary to stdin (with line feed) !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of x is written to the logger.
      void println​(double x)
      print a double to stdin (with linefeed)
      void println​(float x)
      print a float to stdin (with linefeed).
      void println​(int x)
      print an integer to stdin (with linefeed)
      void println​(long x)
      print a long to stdin (with linefeed)
      void println​(java.lang.Object x)
      print an object to stdin (with linefeed)
      void println​(java.lang.String x)
      print a string to stdin (with line separator)
      void printlnPassword​(char[] s)
      print a password to stdin (with linefeed)
      void printPassword​(char[] s)
      print a password to stdin
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Expect

        public Expect()
      • Expect

        public Expect​(java.lang.String[] cmd)
        Creates a new instance of Expect
        Parameters:
        cmd - the command which will be executed
        See Also:
        Runtime.exec(String[])
    • Method Detail

      • command

        public java.util.List command()
      • env

        public java.util.List env()
      • add

        public void add​(ExpectHandler handler)
        Add a new expect handler.
        Parameters:
        handler - the expect handler
      • exec

        public int exec​(long timeout)
                 throws java.io.IOException,
                        java.lang.InterruptedException
        Execute the command and call the registered handlers.
        Parameters:
        timeout - timout for the command in milliseconds
        Returns:
        the exit code of the command
        Throws:
        java.io.IOException - if the execution of the command failed
        java.lang.InterruptedException - if the current thread has been interrupted before the command has been finished.
      • flush

        public void flush()
        Flush stdin
      • println

        public void println​(java.lang.String x)
        print a string to stdin (with line separator)
        Parameters:
        x - the string
      • print

        public void print​(java.lang.String s)
        print a string to stdin
        Parameters:
        s - the string
      • println

        public void println​(java.lang.Object x)
        print an object to stdin (with linefeed)
        Parameters:
        x - the object
      • print

        public void print​(java.lang.Object obj)
        print an object to stdin
        Parameters:
        obj - the object
      • println

        public void println​(int x)
        print an integer to stdin (with linefeed)
        Parameters:
        x - the integer
      • print

        public void print​(int i)
        print an integer to stdin
        Parameters:
        i - the integer
      • print

        public void print​(boolean b)
        print a boolean to stdin
        Parameters:
        b - the boolean
      • println

        public void println​(boolean x)
        print a boolean to stdin (with linefeed)
        Parameters:
        x - the boolean
      • println

        public void println​(long x)
        print a long to stdin (with linefeed)
        Parameters:
        x - the long
      • print

        public void print​(long l)
        print a long to stdin
        Parameters:
        l - the long
      • println

        public void println​(double x)
        print a double to stdin (with linefeed)
        Parameters:
        x - the double
      • println

        public void println​(char[] x)
        print a char arrary to stdin (with line feed) !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of x is written to the logger.
        Parameters:
        x - the char array
      • print

        public void print​(char[] s)
        print a char arrary to stdin !!!Attention!!!: For security reasons this method should not be used to send passwords to the process, sice the content of s is written to the logger.
        Parameters:
        s - the char array
      • printPassword

        public void printPassword​(char[] s)
        print a password to stdin
        Parameters:
        s - the password
      • printlnPassword

        public void printlnPassword​(char[] s)
        print a password to stdin (with linefeed)
        Parameters:
        s - the password
      • print

        public void print​(double d)
        print a double to stdin
        Parameters:
        d - the double
      • println

        public void println​(char x)
        print a char to stdin.
        Parameters:
        x - the char
      • print

        public void print​(char c)
        print a char to stdin.
        Parameters:
        c - the char
      • println

        public void println​(float x)
        print a float to stdin (with linefeed).
        Parameters:
        x - the float
      • print

        public void print​(float x)
        print a float to stdin.
        Parameters:
        x - the float
      • println

        public void println()
        print linefeed to stdin.