1

I'm trying to write a little application that would automate the use of an external application which is cisco any connect mobility client. It provides a command line tools that you can use to connect to your VPN.

I want to run this command line tools from my java application using apache commons-exec library and be able to read his output to send needed information.

I already searched on the net to find "how to communicate" with an external application but the only post I found was this article : Trouble providing multiple input to a Command using Apache Commons Exec and extracting output where it just says "hey I found the solutions", but I don't understand how he did it.

When I start the process, I run a function that read the input like this :

Thread T = new Thread() {
        public void run() {
            String line;
            try {
                line = processOutput.readLine();
                while (line != null) {
                    System.out.println(line);
                    if(line.contains("VPN-Password")){
                        sendMessage(processInput, "1");
                    }
                    if(line.contains("Please enter your username     and password")){
                        sendMessage(processInput, "username");
                    }
                    line = processOutput.readLine();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    };
    T.start();

the function send message just run a thread to write in the process inputstream then flush it.

Thread T = new Thread() {
        public void run() {

            try {
                os.write((message+"\n").getBytes());
                os.flush();
                System.out.println("SENT : "+message);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


        }

    };
    T.start();

As you can see I check the output to send a message to the process depending on it (basicly to answer questions). However, when it comes to the "Please enter...", I got this exception

java.io.IOException: Read end dead

My issue is that I can't find how to "communicate" with the process by reading his output and sending it messages depending on what it tells me.

Can you help me ?

Thanks for reading.

Community
  • 1
  • 1

0 Answers0