java實現telnet連線操作
package com.telnet; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.SocketException; import org.apache.commons.net.telnet.TelnetClient; public class WindowsShell { private TelnetClient telnet = new TelnetClient("VT220"); InputStream in; PrintStream out; String prompt = ">"; public WindowsShell(String ip, int port, String user, String password) { try { telnet.connect(ip, port); in = telnet.getInputStream(); out = new PrintStream(telnet.getOutputStream()); login(user, password); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 登入 * * @param user * @param password */ public void login(String user, String password) { // read()Until("login:"); readUntil("login:"); write(user); readUntil("password:"); write(password); readUntil(prompt + ""); } /** * 讀取分析結果 * * @param pattern * @return */ public String readUntil(String pattern) { try { char lastChar = pattern.charAt(pattern.length() - 1); StringBuffer sb = new StringBuffer(); char ch = (char) in.read(); while (true) { sb.append(ch); if (ch == lastChar) { if (sb.toString().endsWith(pattern)) { return sb.toString(); } } ch = (char) in.read(); // System.out.print(ch); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 寫操作 * * @param value */ public void write(String value) { try { out.println(value); out.flush(); } catch (Exception e) { e.printStackTrace(); } } /** * 向目標傳送命令字串 * * @param command * @return */ public String sendCommand(String command) { try { write(command); return readUntil(prompt + ""); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 關閉連線 */ public void disconnect() { try { telnet.disconnect(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws UnsupportedEncodingException { WindowsShell ws = new WindowsShell("127.0.0.1", 23, "Administrator", "123"); // System.out.println(ws); // 執行的命令 String str = ws.sendCommand("ipconfig"); str = new String(str.getBytes("ISO-8859-1"),"GBK"); System.out.println(str); ws.disconnect(); } }
此處需要匯入: commons-net-3.3.jar
例子傳送命令為:ipconfig。
返回結果如下圖:
----------------------------------------------------------------------------------------------------------------------------------------
補充一:
做該功能時,客戶那裡使用的是oracle12, 連線資料庫的方式需要使用OCI。之前一直都使用thin方式, oci第一次使用,可以說是一步一個坎。
從網上查找了一下資料:oci方式,客戶端通過native java method呼叫c library訪問服務端,而這個c library就是oci(oracle called interface),因此這個oci總是需要隨著oracle客戶端安裝(從oracle10.1.0開始,單獨提供OCI Instant Client,不用再完整的安裝client)。
1.先從oracle官網下載oracle12客戶端。
2.安裝客戶端。
3.建立一個本地服務。
4.關鍵來了: java程式碼裡面的書寫方式
Connection connection = DriverManager.getConnection("jdbc:oracle:oci8:wwj/[email protected]");
其中 wwj/wwj123 為使用者名稱密碼,nets為本地服務名。
也算是一個知識點, 記錄下來,給分享給有需要的小夥伴及自己。
-----------------------------------------------------------------------------------------------------------------------------------------
補充二:
在java實現傳送telnet功能傳送命令時,有的命令執行後會讓你輸入確認命令 y/n 。
此時如果直接傳送 she.sendCommand("y"); 再發送一次回車she.sendCommand("\r\n"); 此時會返回錯誤資訊
y ^ % Unknown command, the error locates at '^'
從網上找也沒有找到類似的問題,我就自己嘗試,最終還真讓我試出來了 she.sendCommand("\r\ny\r\n");
相關推薦
java實現telnet連線操作
package com.telnet; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.io.UnsupportedEncodin
Zookeeper客戶端基本操作java實現——建立連線、建立節點、新增修改節點內容、獲取子節點、獲取節點資料、刪除節點
一、引入Zookeeper包,新增pom依賴 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper<
Java實現Excel表格操作--API:jxl
一、jxl瞭解 jxl是一個韓國人寫的java操作excel的工具, 在開源世界中,有兩套比較有影響的API可 供使用,一個是POI,一個是jExcelAPI。其中功能相對POI比較弱一點。但jExcelAPI對中文支援非常好,API是純Java的, 並不 依賴Windows系統,即
Java實現遠端連線Linux並執行命令
需要的jar包 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</art
APPIUM+java實現長按操作
真心不容易啊,網上找了半天,這個操作Python語言居多 然後在小夥伴的幫助下,寫了個java的 終於可以長按錄音操作啦~~~開心 直接附上語句: TouchAction ta = new TouchAction(driver); WebElement
java實現ftp檔案操作的方式有哪些?
由於時間問題,這裡嘗試了兩種方式:Apache組織提供的org.apache.commons.net.ftp、edtFTPj。 一、org.apache.commons.net.ftp 要使用org.apache.commons.net.ftp實現功能需要專案內引入comm
java實現堆的操作(建堆,插入,刪除)
import java.util.Arrays; //小頂堆的程式碼實現 public class Heap { // 向下調整,頂端的大值往下調,主要用於刪除和建堆,i表示要調整的節點索引,n表示堆的最有一個元素索引 // 刪除時候,i是0,建堆時候i從最後一個節
JAVA實現LDAP連線驗證
什麼是LDAP? LDAP(輕量目錄訪問協議),簡單的說,LDAP是一個能得到關於人或者資源的集合、靜態資料的快速方式。 這種說法似乎有點抽象,結合這幾天在做的一個專案具體來談一下。 AD,LDAP,初來乍到的面對這些在課本上不可能碰到的新術語還真是有些懵了,查了大
Java 實現介面的字串連線操作
實現如下介面 詳細過程 一、建立一個類繼承窗體類並實現監聽介面 二、屬性: 5個標籤,串1,串2,+,=,結果
java用ServerSocket類結合io流實現一對一聊天(java實現簡單的TCP聊天程式只能用telnet連線後方可使用)
粗略寫了點程式碼,其實這種在流的實現方式裡面可以用好多種不同流方面的類,我這沒用最簡單的,而是那邊弄個流這邊弄個流,好讓自己熟悉不同流的類,希望大家別繞暈哈。可能對新手會有點繞,不過久了應該就會了,程
Java實現雙向循環鏈表的基本操作
scrip ide head ring 鏈表的基本操作 print static count out 1 package Eric.ADT; 2 3 /** 4 * <p> 5 * Title:doubleLinkedList 6
求較大整數n的階乘,因為n較大時n的階乘超出了正常類型的表示範圍,采用數組進行操作(java實現)
階乘 大數字package net.yk.mlgorithm; /** * 求較大數的階乘 * @author Administrator * * @param <T> */ public class ArraysMul<T> { public static void
java實現樹的一般操作
表示 rom class ado span .get poll() tno 2層 樹是數據結構中最基本的結構,今天的博客更新一下樹的基本操作: 樹的節點結構: package tree; /** * TreeNode: 普通的樹節點 *
Java實現兩分彩源碼搭建操作
繼承 否則 接口 普通 避免 偶數 index 必須 this 一:兩分彩源碼搭建介紹:企 娥:217 1793 408 為了避免插入和刪除的線性開銷,就需要保證表可以不連續存儲,否則表的每部分可能都需要整體移動。Java語言中包含一些普通數據結構的實現,這部分叫做Coll
java實現連線vsftpd伺服器,上傳,下載,刪除。
核心程式碼如下: package com.bh.service; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOExcep
處理器如何實現原子操作 java 實現原子操作 轉載
原文地址:http://www.infoq.com/cn/articles/atomic-operation 1. 引言 原子(atom)本意是“不能被進一步分割的最小粒子”,而原子操作(atomic operation)意為"不可被中斷的一個或一系列操作" 。在多處理器上
【JAVA】使用 jedis操作redis——連線、儲存資料、切庫等
本篇運用Java呼叫jedis包(jedis線上文件API ),做簡單操作例項。 安裝jedis 1. 2.9.0 jar 版本下載: jedis-2.9.0.jar 2. 新建專案,新增該驅動包 連線到 redis 服務
JAVA實現資料庫前端與後臺的連線,顯示登入成功並且跳轉至後臺資料庫
撰寫人——軟體二班——陳喜平 注意要啟動資料庫,不然無法和後臺連結 登入成功直接跳轉至資料列表 如圖 登入不成功,提示框彈出 如圖 完整工程包: 連結:https://pan.baidu.com/s/1e_iJQ6sHIOoeLYWoeXBP5A 提取碼:djhh (需
Java實現單鏈表及相關操作
單鏈表是一種鏈式存取的資料結構,用一組地址任意的儲存單元存放線性表中的資料元素。連結串列中的資料是以結點來表示的。 每個結點的構成:元素(資料元素的映象) + 指標(指示後繼元素儲存位置), 元素就是儲存資料的儲存單元, 指標就是連線每個結點的地址資料。
Java——socket實現tcp連線
Server: import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { /** * Socket服務端 */