`

java 远程实现操作Linux

 
阅读更多
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;

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

/**
* commons-net-2.0.jar是工程依赖包
*/

public class NetTelnet {
TelnetClient telnet = new TelnetClient();// 初始化Telnet客户端连接
private InputStream is;
private PrintStream out;

// telnet连接初始化需要的参数
private String ip;// 远端主机IP
private int port;// telnet连接的端口号
private String user;// 用户名
private String password;// 密码
private char promopt = '$';// 命令提示符 普通用户命令以$号结束

public NetTelnet(String ip, int port, String user, String password) {
this.ip = ip;
this.port = port;
this.user = user;
this.password = password;

initLink(ip, port, user, password, promopt);
}

private void initLink(String ip, int port, String user, String password,
char promopt) {
try {
telnet.connect(ip, port);// 连接到远端主机
is = telnet.getInputStream();
out=new PrintStream(telnet.getOutputStream());
// in=new Scanner(is);
// out=new PrintWriter(os,true);
// 根据是否是root用户设置命令结束符号
this.promopt = user.equals("root") ? '#' : '$';
login(user, password);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

// 登陆主机
private void login(String user, String password) {
readUntil("login:");// 得到远端发来的是输入用户名的指令
write(user);// 输入用户名
readUntil("Password:");
write(password);
readUntil(promopt + "");// 注意这种转化类型的用法

}

// 获取远端主机发送来的指令
public String readUntil(String pattern) {
try {
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();
char read = (char) is.read();
while (true) {
sb.append(read);
if (read == lastChar) {
if (sb.toString().contains(pattern)) {
return sb.toString();
}
}
read = (char) is.read();
}
} catch (IOException e) {
e.printStackTrace();
}

return null;

}



// 用户发送过去的指令或者数据
public void write(String value) {
out.println( value );  
        out.flush();  

}

// 向远程主机发送命令
public String sendCommand(String command) {
write(command);
return readUntil(promopt + "");
}

// 关闭连接
public void disConnect() {
try {
telnet.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
try {
System.out.println("启动Telnet...");
String ip = "192.168.0.2";
int port = 23;
String user = "user";
String password = "passwprd";
NetTelnet telnet = new NetTelnet(ip, port, user, password);
telnet.sendCommand("export LANG=en");
String r1 = telnet.sendCommand("cd /usr/lib");
String r2 = telnet.sendCommand("pwd");
System.out.println("显示结果");
System.out.println(r1);
System.out.println(r2);

telnet.disConnect();
} catch (Exception e) {
e.printStackTrace();
}
}

}
分享到:
评论

相关推荐

    Java实现Linux的远程拷贝

    在IT行业中,Java是一种广泛应用的编程语言,它不仅在企业级应用中表现出色,也能够实现各种系统级别的功能,如远程文件操作。本篇将详细探讨如何使用Java来实现Linux系统的远程拷贝功能。 首先,要实现Linux的远程...

    JAVA下载远程Linux服务器的文件

    在Java编程中,有时我们需要与远程Linux服务器进行交互,例如下载或上传文件。在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux...

    java通过代码登录远程linux服务器并执行linux命令源码以及jar包

    在Java编程中,有时我们需要实现一个功能,即通过代码远程登录Linux服务器并执行特定的Linux命令。这在自动化运维、远程脚本执行等场景中非常常见。本篇将详细讲解如何实现这一目标,并提供相关源码及jar包。 首先...

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    本篇文章将深入探讨如何使用Java来实现对Linux服务器的文件上传、操作、下载和删除,以及如何借助ganymed-ssh2库实现远程操作。 首先,让我们了解基础概念。Linux服务器是一种基于Linux操作系统并提供网络服务的...

    Java远程登录Linux的包

    用于远程操作Linux命令的ssh2包.可以实现远程登录Linux。

    基于Java的Linux远程登录系统研究与实现.pdf

    研究结果表明,新开发的Java远程登录系统不仅功能全面,而且实现了服务器操作的定制化,比现有的类似工具如Putty、SecureCRT等具有更高的操作效率和更低的维护难度,这对于提升服务器管理水平具有重要意义。

    java语言 远程连接linux并自定义执行目录执行自己想要的指令

    本方法是用java语言写的一个方法,可以远程连接linux系统,并在自己想要的正确的运行目录下去执行自己想要执行的正确的命令;java语言可以直接将此方法放入服务层调用。

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...

    java操作Linux环境

    通过SSH,开发者可以在本地计算机上编写Java程序,然后安全地与远程Linux服务器进行交互。 JSCH库是Java中的一个开源项目,它提供了SSH2的API,使得Java开发者能够轻松实现以下功能: 1. **建立SSH连接**:JSCH...

    java应用程序远程登录linux并执行其命令

    根据给定的信息,本文将详细解释如何通过Java应用程序实现对Linux服务器的远程登录,并执行相应的命令。本案例中,我们采用的是Ganymed SSH2库来实现这一功能。 ### 一、Ganymed SSH2 库简介 Ganymed SSH2 是一个...

    linux shell的java操作实现

    下面是一段基本的Java代码示例,展示了如何使用JSch连接到远程Linux服务器并执行一个简单的Shell命令: ```java import com.jcraft.jsch.*; public class SSHExecutor { public static void main(String[] args) ...

    java远程调试操作步骤

    ### Java远程调试操作步骤 #### 一、准备工作 在进行Java远程调试之前,我们需要完成一些必要的准备工作,确保环境配置正确。 ##### 1.1 安装JCE无限制策略文件 根据描述中的“下载UnlimitedJCEPolicyJDK8”,这...

    java邮件和远程连接linux工具包

    2.用SSH协议远程连接Linux的辅佐工具类。 3.UDP数据包的发送和接收数据类。 4.完整的API文档和Demo示例程序。 使用时请将zy-tools.jar和lib文件夹里的三个jar包导入项目。使用方法可以查看里面的API文档。还是不理解...

    linux java web SSH 工具 远程

    在IT行业中,Linux、Java、Web、SSH以及远程工具是至关重要的组成部分,它们构成了...在实际工作中,通过SSH工具进行远程操作,配合Linux系统的强大功能和Java的跨平台特性,能够实现高效且安全的远程开发和运维工作。

    java操作linux工具包

    这些工具通常包括命令行执行、文件传输、进程管理、系统监控等功能,使得开发者无需深入了解 Linux 命令行语法就能在 Java 环境下实现对 Linux 的操作。在 Java 中,我们可以利用各种开源库如 JSch (Java Secure ...

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    总之,Java结合ganymed-ssh2-build210.jar库可以实现强大的SSH远程连接功能,使开发者能够在Java应用中安全、便捷地与Linux服务器交互,执行各种远程操作。无论是简单的命令执行还是复杂的自动化脚本,这个库都能...

    linux远程连接oracle数据库

    要实现Java程序远程连接Oracle 10g数据库,需要配置好Java环境,并使用Oracle提供的JDBC驱动。 - **通过客户端远程连接Oracle 10g数据库** - 客户端远程连接Oracle数据库通常指的是使用专门的数据库管理工具如PL/...

    利用Java实现远程控制

    Java程序可以做到“一次编写,处处运行”,这意味着Java远程控制软件可以在不同操作系统上无缝运行,无需为每个平台单独编译,极大地增强了软件的实用性和兼容性。 #### 3. 实现远程控制的Java技术细节 ##### 3.1 ...

    Java远程连接Linux服务器并执行命令及上传文件功能

    Java远程连接Linux服务器并执行命令及上传文件功能 ...本文提供了Java远程连接Linux服务器并执行命令及上传文件功能的实现方法,并介绍了相关的知识点,包括JSch库、Apache Commons Logging库、ThreadLocal等。

Global site tag (gtag.js) - Google Analytics