Buongiorno,
qualcuno sa indicarmi una classe o altro per fare un client di telnet
in java?
vorrei fare un programmino che si connette in telnet ad un server e
lanci dei comandi.
Grazie
Buongiorno,
qualcuno sa indicarmi una classe o altro per fare un client di telnet
in java?
vorrei fare un programmino che si connette in telnet ad un server e
lanci dei comandi.
Grazie
Dovresti trovare tutto il necessario nel package java.net ... fondamentalmente c'è da lavorare con Socket.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Ultimamente va di moda...
Non è la prima discussione che viene aperta per questo argomento. Una ricerca ti avrebbe indicato la strada per risolvere.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ciao, in verità ho cercato ma non sono riuscito a far funzionare nulla di quello che ho trovato, quindi chiedevo se qualcuno aveva qualcosa di funzionante da poter anche modificare.
grazie
Ciao! Anche io ho lo stesso problema... Sono riuscito ad aprire un socket con connessione verso una macchina unix, ma al momento del login non riesco a passare le informazioni... Posto il mio programmino (che funziona se non viene richiesto il login...), se qualcuno può aiutarmi lo ringrazio subito!
import java.net.*;
import java.io.*;
import java.awt.*;
public class TCPClient {
public static DataInputStream is;
public static PrintStream os;
public void start()throws IOException {
//Connessione della Socket con il Server
boolean ok=true;
String s="";
Socket socket = new Socket("xxx.xxx.xxx.xxx", 23);
//Stream di byte da passare al Socket
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
DataOutputStream os1 = new DataOutputStream(socket.getOutputStream());
DataOutputStream os2 = new DataOutputStream(socket.getOutputStream());
DataInputStream is = new DataInputStream(socket.getInputStream());
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput = "user";
System.out.print("Inserisco user: "+userInput+'\n');
os.writeBytes(userInput + '\n'+'\r');
String passInput = "pass";
System.out.print("Inserisco pass: "+passInput+'\n');
os1.writeBytes(passInput + '\n'+'\r');
userInput = "touch MM";
System.out.print("Inserisco comando: "+userInput+'\n');
os2.writeBytes(userInput + '\n'+'\r');
//Chiusura dello Stream e del Socket
os.close();
os1.close();
os2.close();
is.close();
socket.close();
}
public static void main (String[] args) throws Exception {
TCPClient tcpClient = new TCPClient();
tcpClient.start();
}
}
ai posteri l'ardua sentenza...
Ali?? non sono meglio un paio di turboreattori?!?!??
utilizzando questa classe:
http://sadun-util.sourceforge.net/
riesco a fare il login ed il logout solo che non riesco a far nessuno comando...
codice:import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import org.sadun.util.*; import org.sadun.util.UnixLoginHandler.LoginIncorrectException; public class Telnet { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Socket s = null; try { s = new Socket("10.77.151.10",23); } catch (UnknownHostException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } UnixLoginHandler handler = null; try { handler = new UnixLoginHandler(s); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } handler.setSendInitialCRLF(false); try { TelnetInputStreamConsumer is = handler.doLogin("prova","prova"); } catch (LoginIncorrectException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.print(e.toString()); System.exit(1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(1); } catch (OperationTimedoutException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(1); } String command="ls -al > prova.txt"; // Comando PrintWriter pw = null; try { pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()), true); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println(e.toString()); } pw.flush(); pw.write(command+"\r\n"); handler.doLogout(); } }
Cosa vuol dire che non riesci a fare nessun comando?
Da quel che vedo viene eseguito un "ls -al > prova.txt"... viene eseguito?
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Prima di scrivere nel socket devi attendere che ti venga chiesto il login, poi la passwd ecc...Originariamente inviato da powerdedalo
Ciao! Anche io ho lo stesso problema... Sono riuscito ad aprire un socket con connessione verso una macchina unix, ma al momento del login non riesco a passare le informazioni... Posto il mio programmino (che funziona se non viene richiesto il login...), se qualcuno può aiutarmi lo ringrazio subito!
import java.net.*;
import java.io.*;
import java.awt.*;
public class TCPClient {
public static DataInputStream is;
public static PrintStream os;
public void start()throws IOException {
//Connessione della Socket con il Server
boolean ok=true;
String s="";
Socket socket = new Socket("xxx.xxx.xxx.xxx", 23);
//Stream di byte da passare al Socket
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
DataOutputStream os1 = new DataOutputStream(socket.getOutputStream());
DataOutputStream os2 = new DataOutputStream(socket.getOutputStream());
DataInputStream is = new DataInputStream(socket.getInputStream());
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput = "user";
System.out.print("Inserisco user: "+userInput+'\n');
os.writeBytes(userInput + '\n'+'\r');
String passInput = "pass";
System.out.print("Inserisco pass: "+passInput+'\n');
os1.writeBytes(passInput + '\n'+'\r');
userInput = "touch MM";
System.out.print("Inserisco comando: "+userInput+'\n');
os2.writeBytes(userInput + '\n'+'\r');
//Chiusura dello Stream e del Socket
os.close();
os1.close();
os2.close();
is.close();
socket.close();
}
public static void main (String[] args) throws Exception {
TCPClient tcpClient = new TCPClient();
tcpClient.start();
}
}
ai posteri l'ardua sentenza...
E come lo faccio?Originariamente inviato da patrick82
Prima di scrivere nel socket devi attendere che ti venga chiesto il login, poi la passwd ecc...![]()
Ringrazio subito per la risposta...
Ali?? non sono meglio un paio di turboreattori?!?!??
Prova a sostituire il DataInputStream con un più consono BufferedReader in modo da poter leggere quello che il server ti dice, riga per riga.
Ciao.codice:BufferedReader br = new BufferedReader( new InputStreamReader( s.getInputStream() ) ); ... String linea = br.readLine(); // Qui attendi che il server ti comunichi // qualcosa (la richiesta login?)![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza