这是我的剧本
echo "Name:"
read name
if [ "$name" == "abcd" ]; then
echo "correct username"
echo "Password:"
read password
if [ "$password" == "pwd" ]; then
echo "Hello"
else
echo "Wrong password"
fi
else
echo "wrong username"
fi
=============================================== ==================================
这是我的Java代码
import java.io.IOException;
import java.util.*;
import expectj.*;
public class Trial {
public static void main(String[] args) {
ExpectJ exp = new ExpectJ();
String command = "sh /root/Desktop/hello.sh";
Spawn s = null;
try {
s = exp.spawn(command);
s.expect("Name:");
s.send("abcd\n");
System.out.println("Current status: "+s.getCurrentStandardOutContents());
s.expect("correct username");
s.expect("Password:");
s.send("pwd\n");
s.expect("Hello");
System.out.println("final output: " + s.getCurrentStandardOutContents());
System.out.println("Possible errors: " + s.getCurrentStandardErrContents());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("ioe\n");
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("toe\n");
} finally {
if (s != null)
s.stop();
}
}
}
=============================================== =============================
这是我的 OUTPUT
Name:
Current status: Name:
correct username
Password:
=============================================== =============================
它没有进一步发展。它也没有终止..我不知道为什么......
答案 0 :(得分:1)
当您对此行发表评论时是否有效:
System.out.println("Current status: "+s.getCurrentStandardOutContents());
也许应用程序“期待”值"correct username"
但是会看到"Current status: Name:
“(来自”debug“行的输出)。不是jExpert的专家,但是如果该工具只是重定向并且监视System.out
,它将看到脚本输出以及您打印到控制台的所有内容。
答案 1 :(得分:0)
我明白了......连续2次 s.expect()语句永远无法正常工作。为了摆脱它,可以添加 \ n 。
在这种情况下
s.expect(“正确的用户名”);
s.expect( “密码”);
必然不起作用。因此,应该用 -
代替s.expect(“正确的用户名\ n密码:”); //这将起作用