我正在尝试一种新方法来解决我一直卡住的问题。而不是使用 expect4j 进行我的 SSH 连接,(我想不出阻止消费者运行和关闭问题的方法,如果你知识渊博并且感觉圣洁,请参阅过去的帖子以获取更多信息,)我要去尝试使用期望脚本。我有一个运行时 exec 编码到 button.onclick,见下文。为什么我得到 127 退出值?我基本上只需要这个expect脚本来ssh,运行一组expect并发送,给我读数,就是这样......
我正在使用cygwin。不确定这是否与为什么这不起作用有关……我的 sh-bang 线是否指向正确的位置?我的 cygwin 安装是完整安装,所有软件包都在 C:\cygwin 中。
为什么我得到 127 退出值而不是从我的服务器读取,我该如何缓解这种情况?
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec( new String [] {"C:\\cygwin\\bin\\bash.exe", "C:\\scripts\\login.exp"});
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t)
{
t.printStackTrace();
}
#!/usr/bin/expect -f
spawn ssh userid@xxx.xxx.xxx.xxx password
match_max 100000
expect "/r/nDestination: "
send -- "xxxxxx\r"
expect eof