ExpectJ用于Telnet

时间:2012-09-28 01:48:11

标签: java telnet expectj

我想在Java中使用Expect的等价物。 这是一个简单的代码:

public class TelnetJExpect
{
    @Test
    public void telnetTest() 
    {
        ExpectJ expectinator = new ExpectJ(5);
        try
        {
            Spawn shell = expectinator.spawn("172.17.80.161", 23);
            System.out.println("\nExit: " + shell.getCurrentStandardOutContents());
            shell.stop();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            assertTrue(false);
        }
    }
}

结果,我得到了垃圾:

ÿýÿý ÿý#ÿý'

退出:

ÿýÿý ÿý#ÿý'

但是,当我从命令行使用telnet时,我得到连接。

请帮忙。

1 个答案:

答案 0 :(得分:0)

试试这个

    ExpectJ ex = new ExpectJ(50);

    //org.apache.commons.net.telnet.TelnetClient
    TelnetClient telnetClient = new TelnetClient();
    telnetClient.connect("192.168.56.101");

    /*
     * add this constructor to TelnetSpawn
     * 
     * public TelnetSpawn(InputStream in, OutputStream out) throws IOException {
        this.m_socket = null;
        m_fromSocket = in;
        m_toSocket = out;
     */
    TelnetSpawn telnetSpawn = new TelnetSpawn(telnetClient.getInputStream(), telnetClient.getOutputStream());
    Spawn spawn = ex.spawn(telnetSpawn);
    try{
        //provide username and password here
        spawn.interact();
    }catch(NullPointerException npe){
        //ignore, nasty expectj bug
    }