package org.opennms; import org.apache.commons.net.telnet.*; import java.io.*; public class GroovyTelnet { private TelnetClient telnet = new TelnetClient(); private InputStream in; private PrintStream out; String m_prompt; public GroovyTelnet() { } public void init( String server, String user, String password, String prompt ) { String loginprompt = "login: "; String passwordprompt = "password: "; set_prompt(prompt); try { // Connect to the specified server telnet.connect( server, 23 ); // Get input and output stream references in = telnet.getInputStream(); out = new PrintStream( telnet.getOutputStream() ); // Log the user on readUntil( loginprompt ); write( user ); readUntil( passwordprompt ); write( password ); // Advance to a prompt readUntil( get_prompt() + " " ); } catch( Exception e ) { e.printStackTrace(); } } public String readUntil( String pattern ) { try { char lastChar = pattern.charAt( pattern.length() - 1 ); StringBuffer sb = new StringBuffer(); boolean found = false; char ch = ( char )in.read(); while( true ) { System.out.print( ch ); sb.append( ch ); if( ch == lastChar ) { if( sb.toString().endsWith( pattern ) ) { return sb.toString(); } } ch = ( char )in.read(); } } catch( Exception e ) { e.printStackTrace(); } return null; } public void write( String value ) { try { out.println( value ); out.flush(); System.out.println( value ); } catch( Exception e ) { e.printStackTrace(); } } public String sendCommand( String command ) { try { write( command ); return readUntil( get_prompt() + " " ); } catch( Exception e ) { e.printStackTrace(); } return null; } public void disconnect() { try { telnet.disconnect(); } catch( Exception e ) { e.printStackTrace(); } } public String get_prompt() { return m_prompt; } public void set_prompt(String prompt) { this.m_prompt = prompt; } }