Der Telnet-Klient ist zu erschöpft, viel mehr als der SSH-Client.
org.apache.commons.net.telnet.telnetclien-verwendete das Commons-Net-Paket von Apache, Commons-NET-3.0.1-binbin.zip.
Die Codekopie lautet wie folgt:
Paket org.sl.util;
import org.apache.commons.net.telet.telnetclient;
import Java.io.*;
Import Java.nio.ByTebuffer;
öffentliche Klasse Telnetutil {
String charset = null;
Byte [] Buff = New Byte [2048];
Telnetclient telnetclient = new telnetclient ();
BufferedReader taltnetreader = null;
BufferedWriter telnetwirter = null;
InputStream telnetin = null;
OutputStream telnetout = null;
public telnetutil () {
telnetclient = new telnetclient ();
}
/**
* Stellen Sie eine Verbindung zum Server her
* @param ip
* @param Port
* @Throws Uns SupportedenCodingException
* @throws ioException
*/
public void connect (String IP, int Port) löst nicht unterstütztEnencodingException, ioException {aus
telnetclient.connect (IP, Port);
setiiStream ();
}
/**
* Stellen Sie eine Verbindung zum Server her
* @param ip
* @Throws Uns SupportedenCodingException
* @throws ioException
*/
public void connect (String IP) löst nicht unterstütztEnencodingException, ioException {aus
telnetclient.connect (IP);
setiiStream ();
}
void setiiStream () wirft eine nicht unterstützte AnscodingException {aus
telnetin = telnetclient.getInputStream ();
telnetout = telnetclient.getOutputStream ();
if (null == charset) {
tellnetreader = new bufferedReader (New InputStreamReader (Telnetin));
telnetwirter = new bufferedWriter (neuer outputStreamwriter (telnetout));
}anders{
tellnetreader = new bufferedReader (neuer InputStreamReader (Telnetin, Charset));
telnetwirter = new bufferedWriter (neuer outputStreamwriter (telnetout, charset));
}
}
/**
* Anmelden
* @param user
* @param passwd
* @return, ob das Login erfolgreich ist.
* @throws ioException
*/
public boolean Login (String -Benutzer, String Passwd) löst IOException {aus
String read = readString ();
für (int i = 0;; i ++) {
if (-1 == read.indexof ("login")) {
read = readString ();
}anders{
brechen;
}
}
WriteText (Benutzer);
read = readString ();
für (int i = 0;; i ++) {
if (-1 == read.indexof ("password")) {
read = readString ();
}anders{
brechen;
}
}
WriteText (Passwd);
für(;;){
read = readString ();
//System.out.println("Last:"+Read);
if (-1! = read.indexof ("last")) {
zurückkehren;
} else if (-1! = read.indexof ("falsch")) {
false zurückgeben;
}
}
}
/**
* Dies ist eine Testmethode. Schreiben Sie sie einfach beiläufig.
* @throws ioException
*/
public void show () löst ioException {aus
// system.out.println (readString ());
// system.out.println (readString ());
// bytebuffer tmp = bytebuffer.alcode (1024);
// byte [] buff = new byte [1024];
// while (telnetin.available ()> 0) {
// int readlen = readBytes (Buff, 0,1024);
// tmp.put (Buff, 0, Readlen);
//}
// system.out.println (neue 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öst ioException {aus
telnetin.read zurückgeben (Buff, Offset, Len);
}
/**
* Lesen Sie String <br/>
* ist gleichbedeutend mit der Konvertierung von ReadByte () in eine Zeichenfolge konvertieren
* @zurückkehren
* @throws ioException
*/
public String readString () löscht ioException {aus {
int readlen = readBytes (this.buff, 0, this.buff.length);
if (0 <Readlen)
Neue Zeichenfolge zurückgeben (Buff, 0, Readlen) .trim ();
anders
zurückkehren "";
}
/**
* Lesen Sie eine Zeile <br/>
* Wenn der Server und der Client nicht das gleiche Betriebssystem sind, kann diese Methode die Linie nicht berechnen.
* @zurückkehren
* @throws ioException
*/
public String readline () löscht ioException {aus
String read = tellnetreader.readline ();
return null == read? "": read.trim ();
}
public void writeBytes (byte [] buff, int offset, int len) löst ioException {aus
telnetout.write (Buff, Offset, Len);
}
/**
* Schreiben Sie die Zeichenfolge auf den Server
* @param Text
* @throws ioException
*/
public void writeText (String text) löst IoException {aus
telnetwirter.write (Text);
telnetwirter.write ('/r');
telnetwirter.write ('/n');
telnetwirter.flush ();
}
/**
* Führen Sie den Befehl aus und geben Sie das Ergebnis <br/> zurück
* Äquivalent zu: <br>
* writeText ();
* return readString ();
* @param cmd
* @zurückkehren
* @throws ioException
*/
public String exec (String cmd) löst IOException {aus
WriteText (CMD);
return readString ();
}
String login1 (String -Benutzer, String Paswd) löst IOException {aus
String read = null;
ReadString ();
ReadString ();
read = readString ();
if (-1! = read.indexof ("login")) {
WriteText (Benutzer);
}
read = readString ();
if (-1! = read.indexof ("password")) {
WriteText (Passwd);
}
read = readString ();
read += readString ();
Rückgabe lesen;
// StringBuffer sb = new StringBuffer ();
// while (null! = (read = readString ())) {
// sb.append (read);
//}
//
// return sb.tostring ();
}
/**
* Schließung
*/
public void close () {
versuchen{
writeText ("exit");
writeText ("exit");
writeText ("exit");
} catch (Ausnahme ex) {
}
versuchen {
if (null! = telnetin) telnetin.close ();
} catch (Ausnahme e) {
}
versuchen {
if (null! = telnetout) telnetout.close ();
} catch (Ausnahme e) {
}
versuchen {
if (null! = telnetclient) telnetclient.disconnect ();
} catch (Ausnahme e) {
}
}
/**
* Setzen Sie den Zeichensatz während der Telnet -Kommunikation <br/>
* Hinweis: Dieser Zeichensatz hat keine notwendige Beziehung zum serverseitigen Zeichensatz <br/>
* Diese Methode muss vor Connect () aufgerufen werden
* @param charset
*/
public void setCharSet (String charSet) {
this.charSet = charSet;
}
/**
* Setzen Sie die Buff -Größe zurück, standardmäßig 2048 Bytes.
* @param Größe
*/
public void setBufferSize (int size) {
this.buff = New Byte [Größe];
}
}
Testklasse
Die Codekopie lautet wie folgt:
statische void t4 () {
Telnetutil tu = new telnetutil ();
versuchen {
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 ();
}
statische void t1 () {
Telnetutil tu = new telnetutil ();
versuchen {
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 ();
}