Example usage for org.apache.commons.net.telnet TelnetClient getOutputStream

List of usage examples for org.apache.commons.net.telnet TelnetClient getOutputStream

Introduction

In this page you can find the example usage for org.apache.commons.net.telnet TelnetClient getOutputStream.

Prototype

public OutputStream getOutputStream() 

Source Link

Document

Returns the telnet connection output stream.

Usage

From source file:examples.weatherTelnet.java

public final static void main(String[] args) {
    TelnetClient telnet;

    telnet = new TelnetClient();

    try {/* www  . j a v a  2s . c om*/
        telnet.connect("rainmaker.wunderground.com", 3000);
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(1);
    }

    IOUtil.readWrite(telnet.getInputStream(), telnet.getOutputStream(), System.in, System.out);

    try {
        telnet.disconnect();
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(1);
    }

    System.exit(0);
}

From source file:controllers.TNodes.java

/**
 * telnet/* ww w  . ja  va2 s.c o  m*/
 * 
 * @param ip
 * @param user
 * @param password
 * @param telnet
 * @return
 */
public static boolean connect(String ip, String user, String password, TelnetClient telnet) {
    try {
        telnet.connect(ip, 23);
        telnet.setSoTimeout(2 * 1000);
        PrintStream out = new PrintStream(telnet.getOutputStream());
        out.println(user);
        out.flush();
        // TimeUnit.SECONDS.sleep(1);
        out.println(password);
        out.flush();
        // TimeUnit.SECONDS.sleep(1);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
    return true;
}

From source file:expect4j.ExpectUtils.java

/**
 * TODO Simulate "Could not open connection to the host, on port...."
 * TODO Simulate "Connection refused"//from  ww  w  .j  ava 2 s  .  co  m
 */
public static Expect4j telnet(String hostname, int port) throws Exception {
    // This library has trouble with EOF
    final TelnetClient client = new TelnetClient();

    TerminalTypeOptionHandler ttopt = new TerminalTypeOptionHandler("VT100", false, false, true, true);
    EchoOptionHandler echoopt = new EchoOptionHandler(true, false, true, false);
    SuppressGAOptionHandler gaopt = new SuppressGAOptionHandler(false, false, false, false);
    client.addOptionHandler(ttopt);
    client.addOptionHandler(echoopt);
    client.addOptionHandler(gaopt);

    client.connect(hostname, port);
    InputStream is = new FromNetASCIIInputStream(client.getInputStream()); // null until client connected
    OutputStream os = new ToNetASCIIOutputStream(client.getOutputStream());

    StreamPair pair = new StreamPair(is, os) {
        public void close() {
            //super.close();
            try {
                if (client != null)
                    client.disconnect();
            } catch (IOException ioe) {

            }
        }
    };

    /*
    URL url=new URL("telnet", hostname, port, "",  new thor.net.URLStreamHandler());
    final URLConnection urlConnection=url.openConnection();
    urlConnection.connect();
    if (urlConnection instanceof TelnetURLConnection) {
    ((TelnetURLConnection)urlConnection).setTelnetTerminalHandler(new SimpleTelnetTerminalHandler());
    }
    OutputStream os=urlConnection.getOutputStream();
    InputStream is=urlConnection.getInputStream();
             
    StreamPair pair = new StreamPair(is, os) {
    public void close() {
        try { ((TelnetURLConnection)urlConnection).disconnect(); }catch(Exception e) { }
    }
    };
     */
    Expect4j expect4j = new Expect4j(pair);

    return expect4j;
}

From source file:eu.europa.ec.fisheries.uvms.plugins.inmarsat.twostage.Connect.java

public String connect(PollType poll, String path, String url, String port, String user, String psw, String dnid)
        throws TelnetException {

    String response = null;//  w w w  . j a va2 s  . c om
    try {
        TelnetClient telnet = new TelnetClient();

        telnet.connect(url, Integer.parseInt(port));
        BufferedInputStream input = new BufferedInputStream(telnet.getInputStream());
        PrintStream output = new PrintStream(telnet.getOutputStream());

        readUntil("name:", input, null, url, port);
        write(user, output);
        readUntil("word:", input, null, url, port);
        sendPsw(output, psw);
        readUntil(">", input, null, url, port);

        response = issueCommand(poll, output, input, dnid, path, url, port);

        if (telnet.isConnected()) {
            telnet.disconnect();
        }
    } catch (IOException ex) {
        LOG.error("Error when communicating with Telnet", ex);
    } catch (NullPointerException ex) {
        throw new TelnetException(ex);
    }
    return response;
}

From source file:TelnetTest.java

public void testFTP_Telnet_Remote_Execution_003() throws IOException {
    os.write("testexecute\r\n".getBytes());
    os.flush();/*w  ww  .  j a va  2s . co m*/

    //this shell will lock, open another one and kill TEF

    TelnetClient tc = new TelnetClient();
    tc.connect(telnetClient.getRemoteAddress());

    InputStream is2 = tc.getInputStream();
    OutputStream os2 = tc.getOutputStream();

    readUntil(is2, prompt);

    os2.write("ps | grep TestExecute\r\n".getBytes());
    os2.flush();

    String s = readUntil(is2, prompt);

    Pattern p = Pattern.compile(".*\\D+(\\d+)\\s[\\s:\\d]+TestExecute Script Engine.*",
            Pattern.DOTALL | Pattern.CASE_INSENSITIVE); //Pattern.DOTALL => '.' includes end of line
    Matcher m = p.matcher(s);

    assertTrue(m.matches());

    String s1 = m.group(1);

    int pid = Integer.parseInt(s1);

    os2.write(("kill " + pid + "\r\n").getBytes());
    os2.flush();
    readUntil(is2, prompt);
    os2.write("bye\r\n".getBytes());
    os2.flush();

    //we should be able now to close the other shell

    readUntil(is, prompt);

}

From source file:li.klass.fhem.fhem.TelnetConnection.java

public RequestResult<String> executeCommand(String command, Context context) {
    LOG.info("executeTask command {}", command);

    final TelnetClient telnetClient = new TelnetClient();
    telnetClient.setConnectTimeout(getConnectionTimeoutMilliSeconds(context));

    BufferedOutputStream bufferedOutputStream = null;
    PrintStream printStream = null;

    String errorHost = serverSpec.getIp() + ":" + serverSpec.getPort();
    try {/*  w w w . jav  a2 s.c o m*/
        telnetClient.connect(serverSpec.getIp(), serverSpec.getPort());

        OutputStream outputStream = telnetClient.getOutputStream();
        InputStream inputStream = telnetClient.getInputStream();

        bufferedOutputStream = new BufferedOutputStream(outputStream);
        printStream = new PrintStream(outputStream);

        boolean passwordSent = false;
        String passwordRead = readUntil(inputStream, PASSWORD_PROMPT);
        if (passwordRead != null && passwordRead.contains(PASSWORD_PROMPT)) {
            LOG.info("sending password");
            writeCommand(printStream, serverSpec.getPassword());
            passwordSent = true;
        }

        writeCommand(printStream, "\n\n");

        if (!waitForFilledStream(inputStream, 5000)) {
            return new RequestResult<>(RequestResultError.HOST_CONNECTION_ERROR);
        }

        // to discard
        String toDiscard = read(inputStream);
        LOG.debug("discarding {}", toDiscard);

        writeCommand(printStream, command);

        // If we send an xmllist, we are done when finding the closing FHZINFO tag.
        // If another command is used, the tag ending delimiter is obsolete, not found and
        // therefore not used. We just read until the stream ends.
        String result;
        if (command.equals("xmllist")) {
            result = readUntil(inputStream, "</FHZINFO>");
        } else {
            result = read(inputStream);
        }

        if (result == null && passwordSent) {
            return new RequestResult<>(RequestResultError.AUTHENTICATION_ERROR);
        } else if (result == null) {
            return new RequestResult<>(RequestResultError.INVALID_CONTENT);
        }

        telnetClient.disconnect();

        int startPos = result.indexOf(", try help");
        if (startPos != -1) {
            result = result.substring(startPos + ", try help".length());
        }

        startPos = result.indexOf("<");
        if (startPos != -1) {
            result = result.substring(startPos);
        }

        result = result.replaceAll("Bye...", "").replaceAll("fhem>", "");
        result = new String(result.getBytes("UTF8"));
        LOG.debug("result is {}", result);

        return new RequestResult<>(result);

    } catch (SocketTimeoutException e) {
        LOG.error("timeout", e);
        setErrorInErrorHolderFor(e, errorHost, command);
        return new RequestResult<>(RequestResultError.CONNECTION_TIMEOUT);
    } catch (UnsupportedEncodingException e) {
        // this may never happen, as UTF8 is known ...
        setErrorInErrorHolderFor(e, errorHost, command);
        throw new IllegalStateException("unsupported encoding", e);
    } catch (SocketException e) {
        // We handle host connection errors directly after connecting to the server by waiting
        // for some token for some seconds. Afterwards, the only possibility for an error
        // is that the FHEM server ends the connection after receiving an invalid password.
        LOG.error("SocketException", e);
        setErrorInErrorHolderFor(e, errorHost, command);
        return new RequestResult<>(RequestResultError.AUTHENTICATION_ERROR);
    } catch (IOException e) {
        LOG.error("IOException", e);
        setErrorInErrorHolderFor(e, errorHost, command);
        return new RequestResult<>(RequestResultError.HOST_CONNECTION_ERROR);
    } finally {
        CloseableUtil.close(printStream, bufferedOutputStream);
    }
}

From source file:de.quadrillenschule.azocamsyncd.ftpservice.FTPConnection.java

public String telnetCommands(String[] commands) {
    close();/*from w w w . ja  va2 s. c  o m*/
    final TelnetClient telnetclient = new TelnetClient();
    telnetclient.setDefaultTimeout(TIMEOUT);
    try {
        telnetclient.connect(getLastWorkingConnection());

        final StringWriter sw = new StringWriter();
        for (String command : commands) {
            IOUtils.copy(new ByteArrayInputStream((command + "\r\n").getBytes(telnetclient.getCharset())),
                    telnetclient.getOutputStream());
        }
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            Logger.getLogger(FTPConnection.class.getName()).log(Level.SEVERE, null, ex);
        }

        // tins.join();
        telnetclient.disconnect();
        //  System.out.println(sw.toString());

        return null;//sw.toString();//sw.toString();

    } catch (IOException ex) {
        try {
            telnetclient.disconnect();
        } catch (IOException ex1) {
            Logger.getLogger(FTPConnection.class.getName()).log(Level.SEVERE, null, ex1);
        }
        Logger.getLogger(FTPConnection.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

From source file:com.xebialabs.overthere.cifs.telnet.CifsTelnetConnection.java

@Override
public OverthereProcess startProcess(final CmdLine cmd) {
    checkNotNull(cmd, "Cannot execute null command line");
    checkArgument(cmd.getArguments().size() > 0, "Cannot execute empty command line");

    final String obfuscatedCmd = cmd.toCommandLine(os, true);
    logger.info("Starting command [{}] on [{}]", obfuscatedCmd, this);

    try {/*from   w w  w. j  a v a 2  s . co m*/
        final TelnetClient tc = new TelnetClient();
        tc.setConnectTimeout(connectionTimeoutMillis);
        tc.addOptionHandler(new WindowSizeOptionHandler(299, 25, true, false, true, false));
        logger.info("Connecting to telnet://{}@{}", username, address);
        tc.connect(address, port);
        final InputStream stdout = tc.getInputStream();
        final OutputStream stdin = tc.getOutputStream();
        final PipedInputStream callersStdout = new PipedInputStream();
        final PipedOutputStream toCallersStdout = new PipedOutputStream(callersStdout);
        final ByteArrayOutputStream outputBuf = new ByteArrayOutputStream();
        final int[] exitValue = new int[1];
        exitValue[0] = -1;

        final Thread outputReaderThread = new Thread("Telnet output reader") {
            @Override
            public void run() {
                try {
                    receive(stdout, outputBuf, toCallersStdout, "ogin:");
                    send(stdin, username);

                    receive(stdout, outputBuf, toCallersStdout, "assword:");
                    send(stdin, password);

                    receive(stdout, outputBuf, toCallersStdout, ">", "ogon failure");
                    send(stdin, "PROMPT " + DETECTABLE_WINDOWS_PROMPT);
                    // We must wait for the prompt twice; the first time is an echo of the PROMPT command,
                    // the second is the actual prompt
                    receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);
                    receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);

                    if (workingDirectory != null) {
                        send(stdin, "CD /D " + workingDirectory.getPath());
                        receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);
                    }

                    send(stdin, cmd.toCommandLine(getHostOperatingSystem(), false));

                    receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);

                    send(stdin, "ECHO \"" + ERRORLEVEL_PREAMBLE + "%errorlevel%" + ERRORLEVEL_POSTAMBLE);
                    receive(stdout, outputBuf, toCallersStdout, ERRORLEVEL_POSTAMBLE);
                    receive(stdout, outputBuf, toCallersStdout, ERRORLEVEL_POSTAMBLE);
                    String outputBufStr = outputBuf.toString();
                    int preamblePos = outputBufStr.indexOf(ERRORLEVEL_PREAMBLE);
                    int postamblePos = outputBufStr.indexOf(ERRORLEVEL_POSTAMBLE);
                    if (preamblePos >= 0 && postamblePos >= 0) {
                        String errorlevelString = outputBufStr
                                .substring(preamblePos + ERRORLEVEL_PREAMBLE.length(), postamblePos);
                        logger.debug("Errorlevel string found: {}", errorlevelString);

                        try {
                            synchronized (exitValue) {
                                exitValue[0] = Integer.parseInt(errorlevelString);
                            }
                        } catch (NumberFormatException exc) {
                            logger.error("Cannot parse errorlevel in Windows output: " + outputBuf);
                        }
                    } else {
                        logger.error("Cannot find errorlevel in Windows output: " + outputBuf);
                    }
                } catch (IOException exc) {
                    throw new RuntimeIOException(format("Cannot start command [%s] on [%s]", obfuscatedCmd,
                            CifsTelnetConnection.this), exc);
                } finally {
                    closeQuietly(toCallersStdout);
                }
            }
        };
        outputReaderThread.setDaemon(true);
        outputReaderThread.start();

        return new OverthereProcess() {
            @Override
            public synchronized OutputStream getStdin() {
                return stdin;
            }

            @Override
            public synchronized InputStream getStdout() {
                return callersStdout;
            }

            @Override
            public synchronized InputStream getStderr() {
                return new ByteArrayInputStream(new byte[0]);
            }

            @Override
            public synchronized int waitFor() {
                if (!tc.isConnected()) {
                    return exitValue[0];
                }

                try {
                    try {
                        outputReaderThread.join();
                    } finally {
                        disconnect();
                    }
                    return exitValue[0];
                } catch (InterruptedException exc) {
                    throw new RuntimeIOException(format("Cannot start command [%s] on [%s]", obfuscatedCmd,
                            CifsTelnetConnection.this), exc);
                }
            }

            @Override
            public synchronized void destroy() {
                if (!tc.isConnected()) {
                    return;
                }

                disconnect();
            }

            private synchronized void disconnect() {
                try {
                    tc.disconnect();
                    logger.info("Disconnected from {}", CifsTelnetConnection.this);

                    closeQuietly(toCallersStdout);
                } catch (IOException exc) {
                    throw new RuntimeIOException(format("Cannot disconnect from %s", CifsTelnetConnection.this),
                            exc);
                }
            }

            @Override
            public synchronized int exitValue() {
                if (tc.isConnected()) {
                    throw new IllegalThreadStateException(
                            format("Process for command [%s] on %s is still running", obfuscatedCmd,
                                    CifsTelnetConnection.this));
                }

                synchronized (exitValue) {
                    return exitValue[0];
                }
            }
        };
    } catch (InvalidTelnetOptionException exc) {
        throw new RuntimeIOException(
                "Cannot execute command " + cmd + " at telnet://" + username + "@" + address, exc);
    } catch (IOException exc) {
        throw new RuntimeIOException(
                "Cannot execute command " + cmd + " at telnet://" + username + "@" + address, exc);
    }
}

From source file:com.xebialabs.overthere.telnet.TelnetConnection.java

@Override
public OverthereProcess startProcess(final CmdLine cmd) {
    checkNotNull(cmd, "Cannot execute null command line");
    checkArgument(cmd.getArguments().size() > 0, "Cannot execute empty command line");

    final String obfuscatedCmd = cmd.toCommandLine(os, true);
    logger.info("Starting command [{}] on [{}]", obfuscatedCmd, this);

    try {//from  w  ww  . jav a2  s  .  co  m
        final TelnetClient tc = new TelnetClient();
        tc.setSocketFactory(mapper.socketFactory());
        tc.setConnectTimeout(connectionTimeoutMillis);
        tc.addOptionHandler(new WindowSizeOptionHandler(299, 25, true, false, true, false));
        logger.info("Connecting to telnet://{}@{}", username, address);
        tc.connect(address, port);
        tc.setSoTimeout(socketTimeoutMillis);
        final InputStream stdout = tc.getInputStream();
        final OutputStream stdin = tc.getOutputStream();
        final PipedInputStream callersStdout = new PipedInputStream();
        final PipedOutputStream toCallersStdout = new PipedOutputStream(callersStdout);
        final ByteArrayOutputStream outputBuf = new ByteArrayOutputStream();
        final int[] exitValue = new int[1];
        exitValue[0] = -1;

        final Thread outputReaderThread = new Thread("Telnet output reader") {
            @Override
            public void run() {
                try {
                    receive(stdout, outputBuf, toCallersStdout, "ogin:");
                    send(stdin, username);

                    receive(stdout, outputBuf, toCallersStdout, "assword:");
                    send(stdin, password);

                    receive(stdout, outputBuf, toCallersStdout, ">", "ogon failure");
                    send(stdin, "PROMPT " + DETECTABLE_WINDOWS_PROMPT);
                    // We must wait for the prompt twice; the first time is an echo of the PROMPT command,
                    // the second is the actual prompt
                    receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);
                    receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);

                    if (workingDirectory != null) {
                        send(stdin, "CD /D " + workingDirectory.getPath());
                        receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);
                    }

                    send(stdin, cmd.toCommandLine(os, false));

                    receive(stdout, outputBuf, toCallersStdout, DETECTABLE_WINDOWS_PROMPT);

                    send(stdin, "ECHO \"" + ERRORLEVEL_PREAMBLE + "%errorlevel%" + ERRORLEVEL_POSTAMBLE);
                    receive(stdout, outputBuf, toCallersStdout, ERRORLEVEL_POSTAMBLE);
                    receive(stdout, outputBuf, toCallersStdout, ERRORLEVEL_POSTAMBLE);
                    String outputBufStr = outputBuf.toString();
                    int preamblePos = outputBufStr.indexOf(ERRORLEVEL_PREAMBLE);
                    int postamblePos = outputBufStr.indexOf(ERRORLEVEL_POSTAMBLE);
                    if (preamblePos >= 0 && postamblePos >= 0) {
                        String errorlevelString = outputBufStr
                                .substring(preamblePos + ERRORLEVEL_PREAMBLE.length(), postamblePos);
                        logger.debug("Errorlevel string found: {}", errorlevelString);

                        try {
                            synchronized (exitValue) {
                                exitValue[0] = Integer.parseInt(errorlevelString);
                            }
                        } catch (NumberFormatException exc) {
                            logger.error("Cannot parse errorlevel in Windows output: " + outputBuf);
                        }
                    } else {
                        logger.error("Cannot find errorlevel in Windows output: " + outputBuf);
                    }
                } catch (IOException exc) {
                    throw new RuntimeIOException(
                            format("Cannot start command [%s] on [%s]", obfuscatedCmd, TelnetConnection.this),
                            exc);
                } finally {
                    closeQuietly(toCallersStdout);
                }
            }
        };
        outputReaderThread.setDaemon(true);
        outputReaderThread.start();

        return new OverthereProcess() {
            @Override
            public synchronized OutputStream getStdin() {
                return stdin;
            }

            @Override
            public synchronized InputStream getStdout() {
                return callersStdout;
            }

            @Override
            public synchronized InputStream getStderr() {
                return new ByteArrayInputStream(new byte[0]);
            }

            @Override
            public synchronized int waitFor() {
                if (!tc.isConnected()) {
                    return exitValue[0];
                }

                try {
                    try {
                        outputReaderThread.join();
                    } finally {
                        disconnect();
                    }
                    return exitValue[0];
                } catch (InterruptedException exc) {
                    throw new RuntimeIOException(
                            format("Cannot start command [%s] on [%s]", obfuscatedCmd, TelnetConnection.this),
                            exc);
                }
            }

            @Override
            public synchronized void destroy() {
                if (!tc.isConnected()) {
                    return;
                }

                disconnect();
            }

            private synchronized void disconnect() {
                try {
                    tc.disconnect();
                    logger.info("Disconnected from {}", TelnetConnection.this);

                    closeQuietly(toCallersStdout);
                } catch (IOException exc) {
                    throw new RuntimeIOException(format("Cannot disconnect from %s", TelnetConnection.this),
                            exc);
                }
            }

            @Override
            public synchronized int exitValue() {
                if (tc.isConnected()) {
                    throw new IllegalThreadStateException(
                            format("Process for command [%s] on %s is still running", obfuscatedCmd,
                                    TelnetConnection.this));
                }

                synchronized (exitValue) {
                    return exitValue[0];
                }
            }
        };
    } catch (InvalidTelnetOptionException exc) {
        throw new RuntimeIOException(
                "Cannot execute command " + cmd + " at telnet://" + username + "@" + address, exc);
    } catch (IOException exc) {
        throw new RuntimeIOException(
                "Cannot execute command " + cmd + " at telnet://" + username + "@" + address, exc);
    }
}

From source file:org.apache.commons.net.examples.telnet.WeatherTelnet.java

public static final void main(String[] args) {
    TelnetClient telnet;

    telnet = new TelnetClient();

    try {//  w w  w  .  j  a  va 2  s.  co m
        telnet.connect("rainmaker.wunderground.com", 3000);
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(1);
    }

    IOUtil.readWrite(telnet.getInputStream(), telnet.getOutputStream(), System.in, System.out);

    try {
        telnet.disconnect();
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(1);
    }

    System.exit(0);
}