`
collegemiaomiao
  • 浏览: 2974 次
  • 性别: Icon_minigender_2
  • 来自: 鞍山
最近访客 更多访客>>
社区版块
存档分类
最新评论

【转】Java通过Telnet连接执行shell脚本

阅读更多
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();
	}
    }
}

分享到:
评论

相关推荐

    java实现模拟SSH和telnet登陆(实现命令的发送和接受)

    而 Telnet 是一种较老的协议,它允许用户通过网络在远程主机上执行命令,但通常不推荐使用,因为它传输的数据是明文的,不安全。 要实现 SSH 登陆,Java 社区提供了一些库,如 JSch (Java Secure Channel)。JSch 是...

    Java语言实现Telnet客户端程序(有界面)

    Java语言实现的Telnet客户端程序是一种能够连接到远程服务器并执行命令或进行交互的工具。在本资源中,开发者提供了一个具有图形用户界面(GUI)的实现,使得用户可以通过直观的界面来操作 Telnet 客户端,而不再...

    shell 脚本的基本使用

    Shell脚本则是用Shell语言编写的程序,通过一系列预定义的命令和逻辑结构来完成特定的任务。Shell脚本可以实现自动化运维、批量处理文件等任务,是系统管理员和开发人员必备的一项技能。 #### 二、Shell脚本基本...

    远程连接工具SecureCRT

    通过编写脚本,用户可以自动化执行一系列重复性的命令,比如批量重启远程服务或者进行系统维护检查。此外,它支持公共密钥认证,增强了安全性,免去了每次连接都需要输入密码的麻烦。 在安全性方面,SecureCRT遵循...

    JAVA上百实例源码以及开源项目源代码

    Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 ...

    Unix.Shell.Commands.Card.pdf

    Unix Shell是Unix系统中的命令解释器,当用户登录到Sun工作站并启动终端窗口或通过Telnet、Putty等终端模拟器远程登录到多用户Sun Unix系统时,会与Shell进行交互。默认情况下,计算机科学系的用户使用的登录Shell是...

    ToolKit:关于Java,Python和Linux Shell常用用法的个人结论

    2. **脚本编写**:编写shell脚本,可以实现批处理任务,如循环、条件判断、函数等。 3. **环境变量**:如PATH、HOME等,用于指定程序路径和用户目录。 4. **正则表达式**:用于文本匹配和查找,如grep、sed、awk等...

    TELNETONU1.5.zip

    1. **Telnet协议**:这是一种远程访问协议,允许用户通过网络连接到另一台设备(如中兴ONU)并执行命令,仿佛在本地操作一样。它基于TCP/IP协议栈,使用端口23进行通信。 2. **中兴ONU**:中兴光网络单元是电信网络...

    java之linux

    - **命令执行**:用户可以通过 Shell 输入各种命令,Shell 将这些命令解析并传递给内核执行。 - **环境变量和脚本编写**:Shell 还支持环境变量的设置和脚本语言的编写,使得自动化任务处理变得更加简单高效。 ####...

    SecureCRT 终端连接工具

    该工具支持多种协议,包括SSH(Secure Shell)、Telnet、Rlogin和Serial,使用户能够安全地访问和管理基于Unix、Linux和Windows系统的设备。"CISCO模拟器"的提及暗示了SecureCRT在网络工程领域中的应用,与Cisco...

    绕过NTLM认证方式的另一种方法.doc

    3. **利用echo命令写脚本**:通过dos重定向给tlntadmn.exe执行,要求有足够的shell权限或后门。 4. **使用WSH脚本远程开启telnet并修改认证方式**:需具备Admin账户密码和WMI服务开放。 5. **使用服务器端admin的...

    Print-My-Shell:编写Python脚本以自动化生成各种反向Shell的过程

    使用此脚本,您无需离开命令行即可轻松生成各种类型的反向Shell。 当您像挑战一样玩时,此脚本会派上用场。 可用的外壳类型 重击 Perl Ruby 高朗 网猫 恩卡特 电源外壳 Awk a Java 索卡特 Nodejs 远程登录 ...

    com.jcraft.jsch_0.1.31.jar和commons-net-3.2.jar下载

    在项目中引入JSch库,开发者可以方便地在Java程序中实现与SSH服务器的交互,例如执行远程脚本、部署应用或者进行自动化运维操作。 JSch库的核心类包括`JSch`、`Session`、`Channel`等。`JSch`类是整个库的入口点,...

    linux连接工具

    SecureCRT是一款强大的终端仿真程序,它支持多种协议,包括SSH(Secure Shell)、Telnet、Rlogin和Serial。这款工具提供了丰富的功能,如颜色配置、宏支持、会话管理以及多窗口同时连接等,使得用户可以更高效地管理...

    Xshell6免费版

    通过SSH连接到远程服务器后,可以直接在Xshell中执行Java编译、运行、调试等命令,查看日志,甚至配合SFTP进行文件的上传和下载。这对于远程开发和部署Java应用尤其有用。 在字体和颜色配置上,Xshell6允许用户...

    plink.txt文档

    Plink作为PuTTY的一个组件,提供了强大的命令行接口,允许用户通过SSH、Telnet等协议进行远程连接,执行特定任务或管理远程系统。本文将详细介绍Plink的基本概念、常用命令及其应用场景。 #### Plink概述 Plink...

    7日 搞定oracle 详细笔记

    这份详细笔记不仅涵盖了Oracle数据库的基本操作,还深入探讨了Shell脚本编辑、SQLPlus命令行工具的使用,以及Oracle数据库管理的重要概念。以下是根据这些信息整理的知识点: ### Oracle数据库入门与操作 #### 1. ...

    SSH2整合小案例

    - 以下是一个简单的使用JSch连接并执行命令的Java代码片段: ```java JSch jsch = new JSch(); Session session = jsch.getSession("username", "hostname", 22); session.setPassword("password"); session....

    ssh2开发jar包

    - 远程服务器管理:通过SSH2连接到远程服务器,执行命令、监控系统状态。 - 文件传输:使用SFTP协议安全地上传和下载文件,适合自动化部署或备份任务。 - 自动化脚本:结合Java和其他工具,可以编写自动化脚本来处理...

    xshell5 解压直接用 亲测可用

    通过SSH连接,开发者可以直接在Xshell5中执行Java命令,如`javac`进行编译,`java`运行程序,以及`jdb`进行调试。 对于CentOS这样的Linux发行版,Xshell5是管理员的理想选择。它可以方便地进行命令行操作,比如安装...

Global site tag (gtag.js) - Google Analytics