Telnet-Client مرهق للغاية ، أكثر بكثير من SSH-Client.
org.apache.commons.net.telnet.telnetclien-استخدمت حزمة Commons-Net من Apache ، Commons-Net-3.0.1-bin.zip.
نسخة الكود كما يلي:
حزمة org.sl.util ؛
استيراد org.apache.commons.net.telnet.telnetclient ؛
استيراد java.io.*؛
استيراد java.nio.bytebuffer ؛
الطبقة العامة telnetutil {
سلسلة charset = فارغة ؛
Byte [] Buff = New Byte [2048] ؛
telnetclient telnetclient = new TelnetClient () ؛
BufferedReader TelnetReader = null ؛
BufferedWriter telnetwirter = null ؛
InputStream Telnetin = null ؛
telnetout outputStream = null ؛
telnetutil العامة () {
telnetclient = new TelnetClient () ؛
}
/**
* الاتصال بالخادم
* param IP
* Param Port
* Throws UnsupportedEncodingException
* throws ioException
*/
يقوم Connect Public Void Connect (سلسلة IP ، منفذ Int) بإلقاء UnsupportedEncodingException ، IoException {
telnetclient.connect (IP ، port) ؛
setioStream () ؛
}
/**
* الاتصال بالخادم
* param IP
* Throws UnsupportedEncodingException
* throws ioException
*/
يقوم Connect Public Void Connect (سلسلة IP) بإلقاء UnsupportedEncodingException ، IoException {
telnetclient.connect (IP) ؛
setioStream () ؛
}
void setioStream () يلقي UnsupportedEncodingException {
telnetin = telnetclient.getInputStream () ؛
telnetout = telnetclient.getOutputStream () ؛
if (null == charset) {
TelnetReader = New BufferedReader (New InputStreamReader (Telnetin)) ؛
telnetwirter = new BufferedWriter (New OutputStreamWriter (telnetout)) ؛
}آخر{
TelnetReader = New BufferedReader (New InputStreamReader (Telnetin ، Charset)) ؛
telnetwirter = new BufferedWriter (New OutputStreamWriter (telnetout ، charset)) ؛
}
}
/**
* تسجيل الدخول
* param user
* param passwd
* العودة ما إذا كان تسجيل الدخول ناجحًا.
* throws ioException
*/
تسجيل الدخول المنطقي العام (مستخدم سلسلة ، سلسلة passwd) يلقي ioException {
سلسلة قراءة = readString () ؛
لـ (int i = 0 ؛ ؛ i ++) {
if (-1 == read.indexof ("login")) {
read = readString () ؛
}آخر{
استراحة؛
}
}
WriteText (المستخدم) ؛
read = readString () ؛
لـ (int i = 0 ؛ ؛ i ++) {
if (-1 == read.indexof ("كلمة المرور")) {
read = readString () ؛
}آخر{
استراحة؛
}
}
WriteText (passwd) ؛
ل(؛؛){
read = readString () ؛
//system.out.println("last:"+read) ؛
if (-1! = read.indexof ("last")) {
العودة صحيح.
} آخر إذا (-1! = read.indexof ("غير صحيح")) {
العودة كاذبة
}
}
}
/**
* هذه طريقة اختبار ، فقط اكتبها بشكل عرضي.
* throws ioException
*/
عرض الفراغ العام () يلقي ioexception {
// system.out.println (readString ()) ؛
// system.out.println (readString ()) ؛
// bytebuffer tmp = bytebuffer.allocate (1024) ؛
// byte [] buff = new byte [1024] ؛
// بينما (telnetin.available ()> 0) {
// int readlen = readBytes (buff ، 0،1024) ؛
// tmp.put (Buff ، 0 ، readlen) ؛
//}
// system.out.println (سلسلة جديدة (tmp.array ())) ؛
System.out.println ("1"+readString ()) ؛
System.out.println ("2"+readString ()) ؛
System.out.println ("3"+readString ()) ؛
WriteText ("الجذر") ؛
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) يلقي ioException {
إرجاع telnetin.read (Buff ، Offset ، Len) ؛
}
/**
* قراءة السلسلة <br/>
* يعادل تحويل ReadByte () إلى سلسلة
* @يعود
* throws ioException
*/
السلسلة العامة readString () يلقي ioexception {
int readlen = readBytes (this.buff ، 0 ، this.buff.length) ؛
إذا (0 <readlen)
إرجاع سلسلة جديدة (Buff ، 0 ، readlen) .trim () ؛
آخر
يعود ""؛
}
/**
* اقرأ سطر <br/>
* إذا لم يكن الخادم والعميل نفس نظام التشغيل ، فقد تفشل هذه الطريقة في حساب الخط.
* @يعود
* throws ioException
*/
السلسلة العامة readline () يلقي ioException {
string read = telnetReader.ReadLine () ؛
إرجاع null == اقرأ؟ "": read.trim () ؛
}
public void writebytes (byte [] buff ، int stowsset ، int len) يلقي ioException {
telnetout.write (Buff ، Offset ، Len) ؛
}
/**
* اكتب سلسلة إلى الخادم
* param النص
* throws ioException
*/
public void writeText (نص سلسلة) يلقي ioException {
telnetwirter.write (text) ؛
telnetwirter.write ('/r') ؛
telnetwirter.write ('/n') ؛
telnetwirter.flush () ؛
}
/**
* قم بتنفيذ الأمر وأرجع النتيجة <br/>
* أي ما يعادل: <br>
* WriteText () ؛
* return readString () ؛
* param cmd
* @يعود
* throws ioException
*/
السلسلة العامة exec (سلسلة CMD) يلقي ioException {
WriteText (CMD) ؛
إرجاع readString () ؛
}
string login1 (string user ، string passwd) يلقي ioException {
سلسلة قراءة = فارغة ؛
readString () ؛
readString () ؛
read = readString () ؛
if (-1! = read.indexof ("login")) {
WriteText (المستخدم) ؛
}
read = readString () ؛
if (-1! = read.indexof ("كلمة المرور")) {
WriteText (passwd) ؛
}
read = readString () ؛
قراءة += readString () ؛
اقرأ القراءة ؛
// StringBuffer SB = New StringBuffer () ؛
// بينما (null! = (read = readString ())) {
// sb.append (read) ؛
//}
//
// return sb.tostring () ؛
}
/**
* إنهاء
*/
إغلاق الفراغ العام () {
يحاول{
WriteText ("خروج") ؛
WriteText ("خروج") ؛
WriteText ("خروج") ؛
} catch (استثناء ex) {
}
يحاول {
if (null! = telnetin) telnetin.close () ؛
} catch (استثناء e) {
}
يحاول {
if (null! = telnetout) telnetout.close () ؛
} catch (استثناء e) {
}
يحاول {
if (null! = telnetclient) telnetclient.disconnect () ؛
} catch (استثناء e) {
}
}
/**
* اضبط مجموعة الأحرف أثناء اتصال Telnet <br/>
* ملاحظة: لا تحتوي مجموعة الأحرف هذه على علاقة ضرورية مع مجموعة الأحرف من جانب الخادم <br/>
* يجب استدعاء هذه الطريقة قبل الاتصال ()
* param charset
*/
public void setcharset (سلسلة charset) {
this.charset = charset ؛
}
/**
* إعادة ضبط حجم برتقالي ، الافتراضي إلى 2048 بايت.
* الحجم param
*/
public void setBuffersize (int size) {
this.buff = new byte [size] ؛
}
}
فئة الاختبار
نسخة الكود كما يلي:
باطل ثابت T4 () {
telnetutil tu = new TelnetuTil () ؛
يحاول {
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 () ؛
}
باطل ثابت T1 () {
telnetutil tu = new TelnetuTil () ؛
يحاول {
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 () ؛
}