導航:首頁 > 編程語言 > java實現telnet

java實現telnet

發布時間:2022-10-24 06:43:52

① 求助啊, telnet java實現,單元測試沒問題,但在web環境中調用

public ConnTelnetUtil() throws InvalidTelnetOptionException, IOException{ telnet=new TelnetClient(); TerminalTypeOptionHandler ttopt = new TerminalTypeOptionHandler( "VT320", false, false, true, false); EchoOptionHandler echoopt = new EchoOptionHandler(true, true, true, true); SuppressGAOptionHandler gaopt = new SuppressGAOptionHandler(true, true, true, true); telnet.addOptionHandler(ttopt); telnet.addOptionHandler(echoopt); telnet.addOptionHandler(gaopt); }哎喲,這個東西的網上資料太少, 要對talnet加3個option才能在web環境下調用另外他自己的timeout是無效的,為了保證池中telnet會話的即使回收,得自己寫個子線程監控會話,模擬timeout時間來釋放連接。

② 急,java中telnet訪問遠程電腦,然後執行cmd命令,再獲取返回值。

需要個jar包:commons-net-3.3-bin.zip

下載地址:http://commons.apache.org/proper/commons-net/download_net.cgi


你找的代碼我修改過了,復制直接使用。linux系統需要先開啟telnet服務

//執行的命令
System.out.println(she.sendCommand("ll"));

這個輸入linux 命令

importjava.io.InputStream;
importjava.io.PrintStream;

importorg.apache.commons.net.telnet.TelnetClient;

publicclassShell{
privateTelnetClienttelnet=newTelnetClient();

privateInputStreamin;

privatePrintStreamout;

privatecharprompt='$';//普通用戶結束

publicShell(Stringip,intport,Stringuser,Stringpassword){
try{
telnet.connect(ip,port);
in=telnet.getInputStream();
out=newPrintStream(telnet.getOutputStream());
//根據root用戶設置結束符
this.prompt=user.equals("root")?'#':'>';
login(user,password);
}catch(Exceptione){
e.printStackTrace();
}
}

/**
*登錄
*
*@paramuser
*@parampassword
*/
publicvoidlogin(Stringuser,Stringpassword){
//read()Until("login:");
readUntil("login:");
write(user);
readUntil("Password:");
write(password);
readUntil(prompt+"");
}

/**
*讀取分析結果
*
*@parampattern
*@return
*/
publicStringreadUntil(Stringpattern){
try{
charlastChar=pattern.charAt(pattern.length()-1);
StringBuffersb=newStringBuffer();
charch=(char)in.read();
while(true){
sb.append(ch);
if(ch==lastChar){
if(sb.toString().endsWith(pattern)){
returnsb.toString();
}
}
ch=(char)in.read();
System.out.print(ch);
}
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}

/**
*寫操作
*
*@paramvalue
*/
publicvoidwrite(Stringvalue){
try{
out.println(value);
out.flush();
}catch(Exceptione){
e.printStackTrace();
}
}

/**
*向目標發送命令字元串
*
*@paramcommand
*@return
*/
publicStringsendCommand(Stringcommand){
try{
write(command);
returnreadUntil(prompt+"");
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}

/**
*關閉連接
*/
publicvoiddisconnect(){
try{
telnet.disconnect();
}catch(Exceptione){
e.printStackTrace();
}
}

publicstaticvoidmain(String[]args){
// TelnetClienttelnet=newTelnetClient();
try{
Shellshe=newShell("192.168.1.10",23,"root","123456");
System.out.println(she);
//執行的命令
System.out.println(she.sendCommand("ll"));
she.disconnect();

}catch(Exceptione){
//TODO:handleexception
}

}
}

③ java代碼訪問telnet,並受到返回值

import java.io.InputStream;
import java.io.PrintStream;

import org.apache.commons.net.telnet.TelnetClient;

public class Shell {
private TelnetClient telnet = new TelnetClient();

private InputStream in;

private PrintStream out;

private char prompt = '$';// 普通用戶結束

public Shell(String ip, int port, String user, String password) {
try {
telnet.connect(ip, port);
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
// 根據root用戶設置結束符
this.prompt = user.equals("root") ? '#' : '>';
login(user, password);
} catch (Exception e) {
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) {
// TelnetClient telnet = new TelnetClient();
try {
Shell she = new Shell("192.168.1.10", 23, "root", "123456");
System.out.println(she);
//執行的命令
System.out.println(she.sendCommand("ll"));
she.disconnect();

} catch (Exception e) {
// TODO: handle exception
}

}
}

④ java實現Telnet功能。

/*我想這就是你想要的telnet吧,既然我下面用的是apache開源包,你下來自己
*看看能不能自己重寫。方法已經給你提供了。
*要是可以的話結題吧.哈O(∩_∩)
*/
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;

/**
* 利用apache net 開源包,使用telnet方式獲取AIX主機信息
* @version 1.2
*/
public class NetTelnet {

// Telnet對象
private TelnetClient telnet = new TelnetClient();

private InputStream in;

private PrintStream out;

// 提示符。具體請telnet到AIX主機查看
private char prompt = '#';

// telnet埠
private String port;

// 用戶
private String user;

// 密碼
private String password;

// IP地址
private String ip;

public NetTelnet() {

try {
// AIX主機IP
this.ip = "219.243.12.10";
this.password = "05933663007";
this.user = "administrator";
this.port = "23";
telnet.connect(ip, Integer.parseInt(port));
System.out.println("開始獲取輸入流...");
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
// 登錄
/* readUntil("login: ");
write(user);
readUntil("Password: ");
write(password);
readUntil(prompt + " ");*/
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 讀取分析結果
*
* @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();
}
} 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) {
try {
System.out.println("開始執行telnet......");
NetTelnet telnet = new NetTelnet();
// 通過aix的命令「查找主機名稱」獲取數據
// 命令是 "hostname"
// 不熟悉命令的參考<<AIX網路管理手冊>>
System.out.println("開始發送hostname命令");
String result = telnet.sendCommand("hostname");
System.out.println("顯示結果");
System.out.println(result);
// 最後一定要關閉
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}

⑤ java實現telnet 如何發送 y/n

參考一下代碼:

用telnet是這樣:telnet time-A.timefreq.bldrdoc.gov 13

用socket是這樣:

1.importjava.io.*;
2.importjava.net.*;
3.
4./**
5.
6.inBoulder,Colorado,andprintsthetimethatthe
7.serversends.
8.*/
9.publicclassSocketTest
10.{
11.publicstaticvoidmain(String[]args)
12.{
13.try
14.{
15.Sockets=newSocket("time-A.timefreq.bldrdoc.gov",
16.13);
17.
18.BufferedReaderin=newBufferedReader
19.(newInputStreamReader(s.getInputStream()));
20.booleanmore=true;
21.while(more)
22.{
23.Stringline=in.readLine();
24.if(line==null)
25.more=false;
26.else
27.System.out.println(line);
28.}
29.
30.}
31.catch(IOExceptione)
32.{
33.e.printStackTrace();
34.}
35.}
36.}

⑥ 求段java代碼,根據資料庫中的IP和用戶名密碼,遠程telnet到設備

直接給你java關於telnet的一個例子

publicclassMain{publicstaticvoidmain(String[]args){try{
TelnetClienttelnetClient=newTelnetClient("vt200");//指明Telnet終端類型,否則會返回來的數據中文會亂碼
telnetClient.setDefaultTimeout(5000);//socket延遲時間:5000ms
telnetClient.connect("127.0.0.1",23);//建立一個連接,默認埠是23
InputStreaminputStream=telnetClient.getInputStream();//讀取命令的流
PrintStreampStream=newPrintStream(telnetClient.getOutputStream());//寫命令的流
byte[]b=newbyte[1024];intsize;
StringBuffersBuffer=newStringBuffer(300);while(true){//讀取Server返回來的數據,直到讀到登陸標識,這個時候認為可以輸入用戶名
size=inputStream.read(b);if(-1!=size){
sBuffer.append(newString(b,0,size));if(sBuffer.toString().trim().endsWith("login:")){break;
}
}
}
System.out.println(sBuffer.toString());
pStream.println("exit");//寫命令
pStream.flush();//將命令發送到telnetServer
if(null!=pStream){
pStream.close();
}
telnetClient.disconnect();
}catch(SocketExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();
}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();
}
}
}

⑦ 用java實現ssh/telnet跳轉登錄

Runtime.getRuntime().exec("")

獲取輸入輸出流,模擬登錄

⑧ 如何用java實現telnet的登錄及實現命令

參考一下代碼:

用telnet是這樣:telnet time-A.timefreq.bldrdoc.gov 13

用socket是這樣:

1. import java.io.*;
2. import java.net.*;
3.
4. /**
5. This program makes a socket connection to the atomic clock
6. in Boulder, Colorado, and prints the time that the
7. server sends.
8. */
9. public class SocketTest
10. {
11. public static void main(String[] args)
12. {
13. try
14. {
15. Socket s = new Socket("time-A.timefreq.bldrdoc.gov",
16. 13);
17.
18. BufferedReader in = new BufferedReader
19. (new InputStreamReader(s.getInputStream()));
20. boolean more = true;
21. while (more)
22. {
23. String line = in.readLine();
24. if (line == null)
25. more = false;
26. else
27. System.out.println(line);
28. }
29.
30. }
31. catch (IOException e)
32. {
33. e.printStackTrace();
34. }
35. }
36. }

閱讀全文

與java實現telnet相關的資料

熱點內容
安卓如何安裝obb 瀏覽:440
QQ聊天記錄journal文件夾 瀏覽:118
蘋果公司雲伺服器地址 瀏覽:85
加密記事本手機 瀏覽:437
汽車壓縮機變頻閥 瀏覽:95
域外伺服器是什麼意思 瀏覽:639
大眾點評伺服器怎麼老卡頓 瀏覽:556
javavector與list的區別 瀏覽:316
java初始化類數組 瀏覽:303
java字元串轉換成json對象 瀏覽:647
android非阻塞socket 瀏覽:358
編譯系統概念 瀏覽:452
天眼通app能做什麼 瀏覽:557
魅族手機怎麼加密圖庫 瀏覽:8
rpa編譯器 瀏覽:572
車載雲伺服器記錄 瀏覽:740
四川金星壓縮機製造有限公司 瀏覽:55
移動平台圖片壓縮演算法 瀏覽:37
銀行項目java 瀏覽:571
怎樣將pdf轉換為ppt 瀏覽:598