Telnet-client นั้นหมดแรงเกินไปมากกว่า SSH-client
org.apache.commons.net.telnet.telnetclien-ใช้แพ็คเกจคอมมอนส์-เน็ตของ Apache, Commons-Net-3.0.1-bin.zip
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ org.sl.util;
นำเข้า org.apache.commons.net.telnet.telnetclient;
นำเข้า Java.io.*;
นำเข้า java.nio.bytebuffer;
Telnetutil ชั้นเรียนสาธารณะ {
สตริง charset = null;
ไบต์ [] buff = ไบต์ใหม่ [2048];
telnetClient telnetClient = new telnetClient ();
bufferedReader telnetReader = null;
bufferedWriter telnetwirter = null;
inputstream telnetin = null;
OutputStream telnetout = null;
public telnetutil () {
telnetClient = new telnetClient ();
-
-
* เชื่อมต่อกับเซิร์ฟเวอร์
* @param ip
* @param พอร์ต
* @throws unsupportencodingexception
* @throws ioexception
-
โมฆะสาธารณะเชื่อมต่อ (สตริง IP, พอร์ต int) โยน unsupportencodingexception, ioexception {
telnetclient.connect (IP, พอร์ต);
setiostream ();
-
-
* เชื่อมต่อกับเซิร์ฟเวอร์
* @param ip
* @throws unsupportencodingexception
* @throws ioexception
-
โมฆะสาธารณะเชื่อมต่อ (String IP) พ่น unsupportencodingexception, ioexception {
TelnetClient.Connect (IP);
setiostream ();
-
เป็นโมฆะ setiostream () โยน unsupportencodingexception {
telnetin = telnetClient.getInputStream ();
telnetout = telnetClient.getOutputStream ();
if (null == charset) {
telnetReader = ใหม่ bufferedReader (ใหม่ inputStreamReader (telnetin));
telnetwirter = new bufferedWriter (New OutputStreamWriter (telnetout));
}อื่น{
telnetReader = ใหม่ bufferedReader (ใหม่ inputStreamReader (telnetin, charset));
telnetwirter = new bufferedWriter (ใหม่ outputStreamWriter (telnetout, charset));
-
-
-
* เข้าสู่ระบบ
* ผู้ใช้ @param
* @param passwd
* @กลับมาว่าการเข้าสู่ระบบนั้นสำเร็จหรือไม่
* @throws ioexception
-
ล็อกอินบูลีนสาธารณะ (ผู้ใช้สตริง, สตริง passwd) พ่น IOException {
string read = readstring ();
สำหรับ (int i = 0;; i ++) {
if (-1 == read.indexof ("เข้าสู่ระบบ")) {
อ่าน = readString ();
}อื่น{
หยุดพัก;
-
-
writetext (ผู้ใช้);
อ่าน = readString ();
สำหรับ (int i = 0;; i ++) {
if (-1 == read.indexof ("รหัสผ่าน")) {
อ่าน = readString ();
}อื่น{
หยุดพัก;
-
-
writetext (passwd);
สำหรับ(;;){
อ่าน = readString ();
//system.out.println("last:"+Read);
if (-1! = read.indexof ("สุดท้าย")) {
กลับมาจริง;
} else if (-1! = read.indexof ("ไม่ถูกต้อง")) {
กลับเท็จ;
-
-
-
-
* นี่คือวิธีการทดสอบเพียงแค่เขียนมันอย่างไม่เป็นทางการ
* @throws ioexception
-
Public Void Show () พ่น IOException {
// system.out.println (readstring ());
// system.out.println (readstring ());
// bytebuffer tmp = bytebuffer.allocate (1024);
// byte [] buff = 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 ("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) โยน ioexception {
ส่งคืน telnetin.read (บัฟ, ออฟเซ็ต, เลน);
-
-
* อ่านสตริง <br/>
* เทียบเท่ากับการแปลง readByte () เป็นสตริง
* @กลับ
* @throws ioexception
-
สตริงสาธารณะ readstring () พ่น IOException {
int readLen = readBytes (this.buff, 0, this.buff.length);
ถ้า (0 <readlen)
ส่งคืนสตริงใหม่ (buff, 0, readlen) .trim ();
อื่น
กลับ "";
-
-
* อ่านบรรทัด <br/>
* หากเซิร์ฟเวอร์และไคลเอนต์ไม่ใช่ระบบปฏิบัติการเดียวกันวิธีนี้อาจไม่สามารถคำนวณบรรทัดได้
* @กลับ
* @throws ioexception
-
Public String readline () พ่น IOException {
string read = telnetReader.readline ();
return null == อ่าน? "": read.trim ();
-
โมฆะสาธารณะ WriteBytes (byte [] buff, int offset, int len) โยน ioexception {
telnetout.write (บัฟ, ชดเชย, เลน);
-
-
* เขียนสตริงไปยังเซิร์ฟเวอร์
* @param text
* @throws ioexception
-
โมฆะสาธารณะ WriteText (ข้อความสตริง) พ่น IOException {
telnetwirter.write (ข้อความ);
telnetwirter.write ('/r');
telnetwirter.write ('/n');
telnetwirter.flush ();
-
-
* เรียกใช้คำสั่งและส่งคืนผลลัพธ์ <br/>
* เทียบเท่ากับ: <br>
* writetext (); <br/>
* return readstring ();
* @param cmd
* @กลับ
* @throws ioexception
-
Public String Exec (String Cmd) พ่น IOException {
writetext (cmd);
return readstring ();
-
String Login1 (String user, String passwd) พ่น IOException {
string read = null;
readstring ();
readstring ();
อ่าน = readString ();
if (-1! = read.indexof ("เข้าสู่ระบบ")) {
writetext (ผู้ใช้);
-
อ่าน = readString ();
if (-1! = read.indexof ("รหัสผ่าน")) {
writetext (passwd);
-
อ่าน = readString ();
อ่าน += readString ();
กลับมาอ่าน;
// stringbuffer sb = new StringBuffer ();
// ในขณะที่ (null! = (read = readString ())) {
// sb.append (อ่าน);
-
-
// ส่งคืน sb.toString ();
-
-
* ปิด
-
โมฆะสาธารณะปิด () {
พยายาม{
writetext ("ออก");
writetext ("ออก");
writetext ("ออก");
} catch (exception ex) {
-
พยายาม {
ถ้า (null! = telnetin) telnetin.close ();
} catch (Exception e) {
-
พยายาม {
ถ้า (null! = telnetout) telnetout.close ();
} catch (Exception e) {
-
พยายาม {
if (null! = telnetClient) telnetClient.disconnect ();
} catch (Exception e) {
-
-
-
* ตั้งค่าตัวละครในระหว่างการสื่อสาร telnet <br/>
* หมายเหตุ: ชุดอักขระนี้ไม่มีความสัมพันธ์ที่จำเป็นกับชุดอักขระฝั่งเซิร์ฟเวอร์ <br/>
* วิธีนี้จะต้องเรียกก่อนการเชื่อมต่อ ()
* @param Charset
-
โมฆะสาธารณะ setCharset (สตริง charset) {
this.charset = charset;
-
-
* รีเซ็ตขนาดบัฟ, เริ่มต้นเป็น 2048 ไบต์
* ขนาด @param
-
โมฆะสาธารณะ setBuffersize (ขนาด int) {
this.buff = ไบต์ใหม่ [ขนาด];
-
-
ชั้นเรียนทดสอบ
การคัดลอกรหัสมีดังนี้:
โมฆะคงที่ 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 ();
-