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上的Redis服务器的关键知识点: 1. **Jedis库**:Java连接Redis最常用的客户端库是Jedis。首先,你需要在项目中引入Jedis的依赖。如果你使用的是Maven,可以在pom.xml文件中...
在Java开发中,有时我们需要远程连接到Linux服务器执行shell命令,比如进行系统管理、自动化运维或者数据处理等任务。在这种情况下,使用SSH(Secure Shell)协议是常见的解决方案,因为它提供了安全的网络通信。...
java连接服务器,并执行Linux服务器上的命令或脚本
本篇将详细介绍两种主要的Java连接Linux的方式,并结合`CommandExecutor`这一可能的工具或类库进行讨论。 ### 1. 使用Java的Runtime类执行命令 `Runtime.getRuntime().exec()`方法是Java内置的一种执行外部命令的...
java实现ssh方式连接linux(包含ganymed-ssh2-build210.jar包) ---------Java语言+绚丽的界面+仿ssh实现调用Linux的Terminal,实现远程连接linux进行命令行的操作!
本方法是用java语言写的一个方法,可以远程连接linux系统,并在自己想要的正确的运行目录下去执行自己想要执行的正确的命令;java语言可以直接将此方法放入服务层调用。
这个是用java写的连接linux系统,创建用户密码,创建以用户名字命名的文件夹,然后再给文件夹赋权限,只有当前用户能登录,这么一个过程。
简单来说就是用java实现远程操作redis,ip地址要找到自己linux上连网后的ip地址,在每个case文件中修改后就可以实现了,对应的test文件是实现操作文件,你可以自己写一个主程序把他们包括起来。哦,对了这里面包括了...
java访问linux;通过linux主机ip,端口,用户名,密码,获取linux链接,输入文件路径可批量的下载linux文件,mian函数为测试代码
Linux系统下用Java开发串口通信程序的类库,从Arduino的IDE中扒出来的,比官方的更加好用,Bug少,支持Arduino设备与Linux之间的串口通信;Linux系统下用Java开发串口通信程序的类库,从Arduino的IDE中扒出来的,比...
本文将详细介绍如何使用Java连接Linux服务器,并提供相应的代码示例。首先,我们需要在项目中引入必要的依赖,这里是`ganymed-ssh2`库,它为Java提供了SSH2连接功能。 在`pom.xml`文件中添加以下依赖: ```xml ...
在Java编程中,执行远程Linux服务器命令是一项常见的需求,特别是在自动化运维、远程管理或集成测试等场景下。本文将深入探讨如何使用Java实现这一功能,同时结合提供的标签"源码"和"工具"来理解其背后的实现原理和...
在IT行业中,数据库的使用是不可或...通过以上步骤,你可以在LINUX平台上使用Java连接并操作Access数据库的DBF文件。然而,这种方法并非最优解,因此在实际项目中,考虑数据库迁移或选择更适合的数据库类型会更为明智。
在描述中提到的"java连接Linux系统远程调用"是指通过Java程序使用SSH2协议来连接到Linux服务器,执行命令或者管理文件系统。这种方式通常在自动化运维、脚本编程或者远程服务调用中非常有用。 下面我们将深入探讨...
描述中提到的“用于通过Java连接Linux的演示”表明,项目提供了示例代码或教程,演示如何在Java应用中设置和使用SSH2连接,可能是为了教学或测试目的。这可能包括创建SSH连接、执行远程命令、读取返回结果、管理文件...
这里,我们将会详细探讨Java如何通过SSH连接到Linux系统以及相关的关键概念和技术。 首先,SSH是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。它通过加密来保护数据传输,防止中间人攻击。在...
2.用SSH协议远程连接Linux的辅佐工具类。 3.UDP数据包的发送和接收数据类。 4.完整的API文档和Demo示例程序。 使用时请将zy-tools.jar和lib文件夹里的三个jar包导入项目。使用方法可以查看里面的API文档。还是不理解...
总的来说,Java通过JSch库提供了强大的SSH连接能力,让我们能够方便地实现Linux远程拷贝功能。理解并熟练运用这些知识,对于开发涉及跨平台操作的Java应用非常关键。通过不断实践和优化,我们可以构建出稳定、高效且...
总之,Java操作Linux环境通过JSCH库实现了SSH连接,提供了丰富的功能,包括执行命令、文件传输和执行远程脚本,这对于分布式系统、自动化运维以及跨平台协作的项目尤其重要。通过熟练掌握这些技能,开发者可以构建...