`
arne3166
  • 浏览: 129709 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java实现telnet远程调用脚本

阅读更多

java中远程登陆主机并远程调用执行shell脚本

package place.in.javaeye;

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)
    {
//        readUntil("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("10.**.***.***", 23, "***", "***");
    		System.out.println(she);
    		System.out.println(she.sendCommand("ls"));
    		she.disconnect();

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

	}
}

 

3
0
分享到:
评论
1 楼 isca 2012-07-05  
第25行的>应该是$ ,要不然无法执行命令。。。。

相关推荐

    apache_net.zip_apache teln_apache telnet_java telnet_java telnet

    它允许程序员构建复杂的telnet应用,比如模拟终端、远程控制软件或自动化脚本。在描述中提到的"java的telnet example"可能是指包含的一些示例代码,这些代码演示了如何使用Apache Net库来创建telnet客户端或服务器。...

    starcore_for_winuwp.3.5.0.zip

    •支持分布式功能,CLE将对象的定义和描述同步到客户端,提供远程调用接口,可以在客户端使用对象的属性,调用对象的函数 •提供多种工具,包括:服务家在,打包,发布,调试,管理 •支持telnet客户端,可以直接...

    java源码包---java 源码 大量 实例

    演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...

    java源码包3

    演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...

    java源码包2

    演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...

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

    演示Address EJB的实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...

    python 如何调用 dubbo 接口

    在Python脚本中,我们可以通过Telnetlib模块的Telnet类来实现这一过程。具体步骤包括创建Telnet类的对象,连接到Dubbo服务的IP地址和端口,构造符合Dubbo协议的命令字符串,并通过write方法发送命令。最后,使用read...

    ant telnet ftp linux

    `Ant`是一个由Apache基金会开发的Java构建工具,它允许开发者通过XML配置文件来定义构建任务,实现了编译、测试、打包和部署等一系列自动化过程。在这个场景下,`Ant`被用来实现项目的打包和发布,大大减少了手动...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...

    java源码包4

    演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...

    Socket调用服务器bat

    在"upclearcase.rar"这个压缩包中,可能包含了实现Socket调用服务器的批处理脚本和相关配置文件。解压后,我们可以找到具体的.bat文件,通过阅读其内容了解如何与服务器进行Socket通信。可能的操作包括设置服务器的...

    ANT和OpenSSH在Java Web数据安全传输中的应用.pdf

    将ANT和OpenSSH结合,可以在Java Web系统中实现远程发布和安全文件传输。ANT可以通过定义任务(tasks)调用OpenSSH命令行工具,如scp(安全复制)或sftp(安全文件传输协议),进行文件的加密传输。这样,开发者可以...

    Java 程序员开发常用的工具.docx

    - 支持模拟服务器,方便测试 API 调用。 - **适用场景**:适用于 API 接口的开发、测试和调试。 - **SoapUI** - **简介**:SoapUI 是一个用于 SOAP 和 REST API 测试的强大工具。 - **特点**: - 支持 SOAP、...

    ssh2开发jar包

    - 自动化脚本:结合Java和其他工具,可以编写自动化脚本来处理复杂的远程操作。 需要注意的是,使用SSH2开发时应遵循最佳实践,确保安全性,例如: - 使用强密码或密钥对进行身份验证。 - 定期更新SSH2库,以获取...

    jdkapi,jdk,Xshell,tomcat,eclipse

    它是Java编程语言的核心组成部分之一,提供了各种类库或接口供Java开发者调用,从而实现不同的功能。例如,`java.lang` 包提供了基本的类,如`String` 和 `Math`;`java.util` 包则提供了一些实用的数据结构,如`...

    commons-net.zip

    Apache Commons Net库是Java开发者在进行网络编程时的重要工具,它包含了多种网络协议的实现,如FTP(文件传输协议)、Telnet(远程登录协议)、NNTP(新闻组传输协议)等。此外,还有对SMTP(简单邮件传输协议)和...

    Java软件开发工程师面试题宝典.doc

    - **应用场景**:AOP编程、远程调用、事务管理等。 - **实现方式**:Java自带的`java.lang.reflect.Proxy`类。 **1.8 字符串与集合类** - **String**: - 不可变性:String对象一旦创建后不能修改其内容。 - ...

    Java Command Toolbox-开源

    这款工具的独特之处在于它允许开发者通过任何支持Telnet协议的客户端来远程调用和执行这些命令,极大地提高了工作效率和灵活性。 在Java开发中,经常需要执行各种命令行操作,如编译代码、运行测试、打包应用等。...

    ant1.8全部jar包

    4. `ant-jsch.jar`: Jsch是一个纯Java实现的SSH2库,使得Ant能够通过SSH协议进行远程操作,例如复制文件到远程服务器。 5. `ant-apache-oro.jar`: 包含了Apache Jakarta ORO库,它是一个正则表达式和模式匹配库,...

Global site tag (gtag.js) - Google Analytics