Le Celnet-Client est trop épuisé, bien plus que le CLIENT SSH.
org.apache.commons.net.telnet.telnetclien - Utilisé le package Commons-Net d'Apache, commons-net-3.0.1-bin.zip.
La copie de code est la suivante:
Package org.sl.util;
import org.apache.commons.net.telnet.telnetClient;
importer java.io. *;
import java.nio.bytebuffer;
classe publique Telnetutil {
String charSet = null;
octet [] buff = nouveau octet [2048];
TelnetClient telnetClient = new TelnetClient ();
BufferedReader telnetReader = null;
BufferedWriter telnetwirter = null;
InputStream telnetin = null;
OutputStream telnetout = null;
public telnetutil () {
telnetClient = new TelnetClient ();
}
/ **
* Connectez-vous au serveur
* @param ip
* Port @param
* @Throws UnportEdenCodingException
* @throws ioexception
* /
public void Connect (String ip, int port) lève unportedEncodingException, ioException {
telnetClient.connect (ip, port);
setioStream ();
}
/ **
* Connectez-vous au serveur
* @param ip
* @Throws UnportEdenCodingException
* @throws ioexception
* /
public void Connect (String ip) lève un supportdEncodingException, ioException {
telnetClient.Connect (IP);
setioStream ();
}
void setioStream () lève un supportdEncodingException {
Telnetin = telnetClient.getInputStream ();
telnetout = telnetClient.getOutputStream ();
if (null == charset) {
telnetReader = new BufferedReader (new InputStreamReader (Telnetin));
telnetwirter = new BufferedWriter (new OutputStreamWriter (telnetout));
}autre{
telnetReader = new BufferedReader (new InputStreamReader (Telnetin, Charset));
telnetwirter = new BufferedWriter (new OutputStreamWriter (telnetout, charset));
}
}
/ **
* Se connecter
* utilisateur @param
* @param passwd
* @return si la connexion est réussie.
* @throws ioexception
* /
Public Boolean Login (String User, String Passwd) lève IOException {
String read = readString ();
pour (int i = 0;; i ++) {
if (-1 == read.indexof ("login")) {
read = readString ();
}autre{
casser;
}
}
writeText (utilisateur);
read = readString ();
pour (int i = 0;; i ++) {
if (-1 == read.indexof ("mot de passe")) {
read = readString ();
}autre{
casser;
}
}
writetext (passwd);
pour(;;){
read = readString ();
//System.out.println("Last:"+Read);
if (-1! = read.indexof ("dernier")) {
Retour Vrai;
} else if (-1! = read.indexof ("incorrect")) {
retourne false;
}
}
}
/ **
* Il s'agit d'une méthode de test, écrivez-la simplement avec désinvolture.
* @throws ioexception
* /
public void show () lève IOException {
// System.out.println (readString ());
// System.out.println (readString ());
// bytebuffer tmp = byteBuffer.AllOcy (1024);
// octet [] buff = nouveau octet [1024];
// while (telnetin.available ()> 0) {
// int readlen = readBytes (buff, 0,1024);
// tmp.put (buff, 0, readlen);
//}
// System.out.println (new String (tmp.Array ()));
System.out.println ("1" + readString ());
System.out.println ("2" + readString ());
System.out.println ("3" + readString ());
writetext ("root");
System.out.println ("4" + readString ());
writetext ("123456");
System.out.println ("5" + readString ());
// System.out.println ("6" + readString ());
// System.out.println ("7" + readString ());
}
public int ReadBytes (byte [] buff, int offset, int len) lève ioException {
return telnetin.read (buff, offset, len);
}
/ **
* Lire la chaîne <br/>
* équivaut à la conversion de ReadByte () en une chaîne
* @retour
* @throws ioexception
* /
public String readString () lève ioException {
int readlen = readBytes (this.buff, 0, this.buff.length);
if (0 <readlen)
return new String (buff, 0, readlen) .trim ();
autre
retour "";
}
/ **
* Lire une ligne <br/>
* Si le serveur et le client ne sont pas le même système d'exploitation, cette méthode peut ne pas calculer la ligne.
* @retour
* @throws ioexception
* /
public String readLine () lève ioException {
String read = telnetReader.readline ();
return null == read? "": read.trim ();
}
public void writeBytes (byte [] buff, int offset, int len) lève ioException {
telnetout.write (buff, offset, len);
}
/ **
* Écrivez de la chaîne sur le serveur
* Texte @param
* @throws ioexception
* /
public void writeText (String Text) lève ioException {
telnetwirter.write (texte);
telnetwirter.write ('/ r');
telnetwirter.write ('/ n');
telnetwirter.flush ();
}
/ **
* Exécutez la commande et renvoyez le résultat <br/>
* Équivalent à: <br>
* writetext (); <br/>
* return readString ();
* @param cmd
* @retour
* @throws ioexception
* /
public String exec (String cmd) lève ioException {
writetext (cmd);
return readString ();
}
String Login1 (String User, String Passwd) lève ioException {
String read = null;
readString ();
readString ();
read = readString ();
if (-1! = read.indexof ("login")) {
writeText (utilisateur);
}
read = readString ();
if (-1! = read.indexof ("mot de passe")) {
writetext (passwd);
}
read = readString ();
lire + = readString ();
retour à lire;
// StringBuffer sb = new StringBuffer ();
// while (null! = (read = readString ())) {
// SB.APPEND (lecture);
//}
//
// retourne sb.toString ();
}
/ **
* fermeture
* /
public void close () {
essayer{
writetext ("exit");
writetext ("exit");
writetext ("exit");
} catch (exception ex) {
}
essayer {
if (null! = telnetin) telnetin.close ();
} catch (exception e) {
}
essayer {
if (null! = telnetout) telnetout.close ();
} catch (exception e) {
}
essayer {
if (null! = telnetClient) telnetClient.disconnect ();
} catch (exception e) {
}
}
/ **
* Définissez le jeu de caractères pendant la communication Telnet <br/>
* Remarque: ce jeu de caractères n'a pas de relation nécessaire avec le jeu de caractères côté serveur <br/>
* Cette méthode doit être appelée avant Connect ()
* @param charset
* /
public void setCharset (String charset) {
this.charset = charset;
}
/ **
* Réinitialisez la taille du buff, par défaut à 2048 octets.
* Taille @param
* /
public void setBuffeSize (int taille) {
this.buff = nouveau octet [taille];
}
}
Classe de test
La copie de code est la suivante:
VOID STATIQUE T4 () {
Telnetutil tu = new Telnetutil ();
essayer {
Tu.Connect ("192.168.2.154");
System.out.println (tu.login ("root", "123456"));
//tu.show ();
//System.out.println (tu.readString ());
//System.out.println(tu.exec("pwd "));
System.out.println (tu.exec ("echo /"123456789/">1.txt"));
System.out.println (tu.exec ("cat 1.txt"));
} catch (ioexception e) {
e.printStackTrace ();
}
tu.close ();
}
void statique t1 () {
Telnetutil tu = new Telnetutil ();
essayer {
Tu.Connect ("192.168.2.154");
System.out.println (Tu.login ("SL1", "Coffee8215"));
//tu.show ();
//System.out.println (tu.readString ());
System.out.println (tu.exec ("pwd"));
} catch (ioexception e) {
e.printStackTrace ();
}
tu.close ();
}