我正在创建一个 Web shell 客户端并成功创建了一个简单的终端。
我可以执行基本命令,但我需要执行sudo -i并传递密码。
发送“sudo -i”命令后,我“期望”新用户(作为 root)提示,但“期望”永远等待。我可以看到提示符合预期。
该代码仅适用于“sudo”操作并且工作正常。通用命令是在单独的方法中执行的。
expect.sendLine( "sudo -i" );
expect.expect( Matchers.contains( ":" ) );
expect.sendLine( password );
// Old prompt was user prompt : user + "@"
// Now I need the root prompt : user + ":"
PROMPT = user + ":";
常用命令(run(String command)方法):
仅当我执行 SUDO 时,这才会在 Expect.expect() 处阻塞(如果我在 sudo 之前尝试此操作,一切也都正常)...
expect.sendLine( command );
String result = expect.expect( Matchers.contains( PROMPT ) ).getInput();
错误(期望 sudo 提示):
net.sf.expectit.ExpectIOException: Expect operation fails (timeout: 30000 ms) for matcher: contains('sadlog:')
expect.sendLine( command );
String result = expect.expect( Matchers.contains(":")).getInput();
int pos = result.indexOf(PROMPT);
if (pos > -1) {
// SUCCESS
} else {
// FAILURE
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)