ExpectIt:无法实现sudo -i

时间:2015-07-17 13:53:27

标签: java expectit

我正在创建一个Web shell客户端并成功创建了一个简单的终端。

enter image description here

我可以执行基本命令,但我需要执行 sudo -i 并传递密码。

enter image description here

发送" sudo -i"命令,我"期待"新用户(以root用户身份)提示,但"期待"永远等待。我可以看到提示符合预期。

enter image description here

此代码仅适用于' sudo'操作和工作正常。常用命令以分开的方法进行。

show

常用命令(run(String command)方法): 这将阻止expect.expect(),如果我做了一个SUDO(如果我在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 + ":";

错误(期待sudo提示):

expect.sendLine( command );
String result = expect.expect( Matchers.contains( PROMPT ) ).getInput();

1 个答案:

答案 0 :(得分:1)

expect.sendLine( command );
String result = expect.expect( Matchers.contains(":")).getInput();
int pos = result.indexOf(PROMPT);

if (pos > -1) {
    // SUCCESS
} else {
    // FAILURE
}