我想在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时,我得到连接。
请帮忙。
答案 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
}