Java通过Telnet连接执行shell脚本
Java代码
/**
* commons-net-2.0.jar是工程依赖包
*/
package telnet2;
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
/**
* @descript NetTelenet.java
* @author sinclair
* @date Jun 10, 2010
*/
public class NetTelnet {
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';// 普通用户结束
public NetTelnet( 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 ) {
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();
}
} 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..." );
String ip = "192.168.0.11";
int port = 23;
String user = "user";
String password = "111111";
NetTelnet telnet = new NetTelnet( ip, port, user, password );
telnet.sendCommand( "export LANG=en" );
String r1 = telnet.sendCommand( "cd /home/project/" );
String r2 = telnet.sendCommand( "pwd" );
String r3 = telnet.sendCommand( "sh a.sh" );
System.out.println( "显示结果" );
System.out.println( r1 );
System.out.println( r2 );
System.out.println( r3 );
telnet.disconnect();
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
而 Telnet 是一种较老的协议,它允许用户通过网络在远程主机上执行命令,但通常不推荐使用,因为它传输的数据是明文的,不安全。 要实现 SSH 登陆,Java 社区提供了一些库,如 JSch (Java Secure Channel)。JSch 是...
Java语言实现的Telnet客户端程序是一种能够连接到远程服务器并执行命令或进行交互的工具。在本资源中,开发者提供了一个具有图形用户界面(GUI)的实现,使得用户可以通过直观的界面来操作 Telnet 客户端,而不再...
Shell脚本则是用Shell语言编写的程序,通过一系列预定义的命令和逻辑结构来完成特定的任务。Shell脚本可以实现自动化运维、批量处理文件等任务,是系统管理员和开发人员必备的一项技能。 #### 二、Shell脚本基本...
通过编写脚本,用户可以自动化执行一系列重复性的命令,比如批量重启远程服务或者进行系统维护检查。此外,它支持公共密钥认证,增强了安全性,免去了每次连接都需要输入密码的麻烦。 在安全性方面,SecureCRT遵循...
Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 ...
Unix Shell是Unix系统中的命令解释器,当用户登录到Sun工作站并启动终端窗口或通过Telnet、Putty等终端模拟器远程登录到多用户Sun Unix系统时,会与Shell进行交互。默认情况下,计算机科学系的用户使用的登录Shell是...
2. **脚本编写**:编写shell脚本,可以实现批处理任务,如循环、条件判断、函数等。 3. **环境变量**:如PATH、HOME等,用于指定程序路径和用户目录。 4. **正则表达式**:用于文本匹配和查找,如grep、sed、awk等...
1. **Telnet协议**:这是一种远程访问协议,允许用户通过网络连接到另一台设备(如中兴ONU)并执行命令,仿佛在本地操作一样。它基于TCP/IP协议栈,使用端口23进行通信。 2. **中兴ONU**:中兴光网络单元是电信网络...
- **命令执行**:用户可以通过 Shell 输入各种命令,Shell 将这些命令解析并传递给内核执行。 - **环境变量和脚本编写**:Shell 还支持环境变量的设置和脚本语言的编写,使得自动化任务处理变得更加简单高效。 ####...
该工具支持多种协议,包括SSH(Secure Shell)、Telnet、Rlogin和Serial,使用户能够安全地访问和管理基于Unix、Linux和Windows系统的设备。"CISCO模拟器"的提及暗示了SecureCRT在网络工程领域中的应用,与Cisco...
3. **利用echo命令写脚本**:通过dos重定向给tlntadmn.exe执行,要求有足够的shell权限或后门。 4. **使用WSH脚本远程开启telnet并修改认证方式**:需具备Admin账户密码和WMI服务开放。 5. **使用服务器端admin的...
使用此脚本,您无需离开命令行即可轻松生成各种类型的反向Shell。 当您像挑战一样玩时,此脚本会派上用场。 可用的外壳类型 重击 Perl Ruby 高朗 网猫 恩卡特 电源外壳 Awk a Java 索卡特 Nodejs 远程登录 ...
在项目中引入JSch库,开发者可以方便地在Java程序中实现与SSH服务器的交互,例如执行远程脚本、部署应用或者进行自动化运维操作。 JSch库的核心类包括`JSch`、`Session`、`Channel`等。`JSch`类是整个库的入口点,...
SecureCRT是一款强大的终端仿真程序,它支持多种协议,包括SSH(Secure Shell)、Telnet、Rlogin和Serial。这款工具提供了丰富的功能,如颜色配置、宏支持、会话管理以及多窗口同时连接等,使得用户可以更高效地管理...
通过SSH连接到远程服务器后,可以直接在Xshell中执行Java编译、运行、调试等命令,查看日志,甚至配合SFTP进行文件的上传和下载。这对于远程开发和部署Java应用尤其有用。 在字体和颜色配置上,Xshell6允许用户...
Plink作为PuTTY的一个组件,提供了强大的命令行接口,允许用户通过SSH、Telnet等协议进行远程连接,执行特定任务或管理远程系统。本文将详细介绍Plink的基本概念、常用命令及其应用场景。 #### Plink概述 Plink...
这份详细笔记不仅涵盖了Oracle数据库的基本操作,还深入探讨了Shell脚本编辑、SQLPlus命令行工具的使用,以及Oracle数据库管理的重要概念。以下是根据这些信息整理的知识点: ### Oracle数据库入门与操作 #### 1. ...
- 以下是一个简单的使用JSch连接并执行命令的Java代码片段: ```java JSch jsch = new JSch(); Session session = jsch.getSession("username", "hostname", 22); session.setPassword("password"); session....
- 远程服务器管理:通过SSH2连接到远程服务器,执行命令、监控系统状态。 - 文件传输:使用SFTP协议安全地上传和下载文件,适合自动化部署或备份任务。 - 自动化脚本:结合Java和其他工具,可以编写自动化脚本来处理...
通过SSH连接,开发者可以直接在Xshell5中执行Java命令,如`javac`进行编译,`java`运行程序,以及`jdb`进行调试。 对于CentOS这样的Linux发行版,Xshell5是管理员的理想选择。它可以方便地进行命令行操作,比如安装...