List of usage examples for org.apache.commons.net.telnet TelnetClient getOutputStream
public OutputStream getOutputStream()
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); }