Beleza?
Estou usando a api commons.net da apache para me conectar via tenlet porém o retorno vem com muita sujeira.
Conesgui limpar boa parte das sujeiras que vem porém, ainda restaram alguns caracteres que não consigo identificar.
conexão telnet e execução de comando:
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.net.telnet.InvalidTelnetOptionException;
import org.apache.commons.net.telnet.TelnetClient;
import org.apache.commons.net.telnet.TerminalTypeOptionHandler;
public class TesteTelnet{
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';
public TesteTelnet( String server, String user, String password ) throws SocketException, IOException, InvalidTelnetOptionException {
// Connect to the specified server
TerminalTypeOptionHandler ttopt = new TerminalTypeOptionHandler("VT100", false, false, true, false);
telnet.addOptionHandler(ttopt);
telnet.connect( server, 23 );
// Get input and output stream references
in = telnet.getInputStream();
out = new PrintStream( telnet.getOutputStream() );
// Log the user on
readUntil( "login: " );
write( user );
readUntil( "Password: " );
write( password );
// Advance to a prompt
readUntil( prompt + " " );
}
/* public void su( String password ) {
try {
write( "su" );
readUntil( "Password: " );
write( password );
prompt = '#';
readUntil( prompt + " " );
}
catch( Exception e ) {
e.printStackTrace();
}
}*/
public String readUntil( String pattern ) {
/* StringBuilder retorno = new StringBuilder();
try{
int ii = 0;
byte[] tmp = new byte[1024];
while (in.read() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0)break;
ii = i;
retorno.append(new String(tmp, 0, i));
}
}catch(IOException e){
e.printStackTrace();
}
System.out.println(retorno);
return retorno.toString();*/
/* BufferedInputStream bufferedInputStream = new BufferedInputStream(in);
byte[] bytes = new byte[1024];
try {
bufferedInputStream.read(bytes);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
final String retorno = new String(bytes);
System.out.println(retorno);
return retorno;*/
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( prompt + " " );
}
catch( Exception e ) {
e.printStackTrace();
}
return null;
}
public void disconnect() {
try {
telnet.disconnect();
}
catch( Exception e ) {
e.printStackTrace();
}
}
public static void main( String[] args ) {
try {
TesteTelnet telnet = new TesteTelnet( "localhost",
"loginservidor",
"senhaservidor" );
String comando = telnet.sendCommand( "ls" );
String[] linhas = null;
if(StringUtils.contains(comando, "\r")){
linhas = comando.split("\r");
}
if(StringUtils.contains(comando, "\n")){
linhas = comando.split("\n");
}
if(StringUtils.contains(comando, "\r\n")){
linhas = comando.split("\r\n");
}
int i = 0;
for(String linha: linhas){
linha = StringUtils.replace(linha, "[0m", "");
linha = StringUtils.replace(linha, "[01;34m", "");
linha = StringUtils.replace(linha, "[00m", "");
linha = StringUtils.replace(linha, "[m[", "");
linha = StringUtils.replace(linha, "[01;32m", "");
linha = StringUtils.replace(linha, "01;36m", "");
linha = StringUtils.replace(linha, "[01;31m", "");
System.out.println("Linha 1 = "+i+" "+linha);
i++;
}
/*telnet.su( "root-password" );*/
telnet.sendCommand( "cd Desktop" );
telnet.sendCommand( "ls" );
telnet.disconnect();
}
catch( Exception e ) {
e.printStackTrace();
}
}
}
Resultado
Linha 1 = 93 eTemplatese
Linha 1 = 94 etestee
Linha 1 = 95 eteste2.sqle
Linha 1 = 96 etesteShel.she
Linha 1 = 97 etesteupdatee
Linha 1 = 98 etexte.txte
Linha 1 = 99 etime_sheete
Linha 1 = 100 etunele
Linha 1 = 101 eurloraclee
Linha 1 = 102 eusuario_e_senha_da_redee
Linha 1 = 103 eusuarioesenhadoterrae
Linha 1 = 104 evare
Linha 1 = 105 eVideose
O lixo que sobrou forão os quadrados que não sei como capturar em java