gpt4 book ai didi

Java 抛出 Process exitValue : 127 when running expect script

转载 作者:行者123 更新时间:2023-11-29 09:49:04 24 4
gpt4 key购买 nike

我正在尝试一种新方法来解决我一直遇到的问题。而不是将 expect4j 用于我的 SSH 连接,(我想不出阻止消费者运行和关闭问题的方法,如果你知识渊博并且感觉圣洁,请参阅过去的帖子以获取更多信息,)我要去尝试使用 expect 脚本。我将运行时执行程序编码到 button.onclick 中,请参见下文。为什么我得到 127 退出值?我基本上只需要这个 expect 脚本来 ssh,运行一组 expect 和 send,给我读数,就是这样......

我正在使用 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

最佳答案

问题是您使用 bash 来执行 expect 脚本。您需要使用 expect 来执行 expect 脚本,或 bash 通过 shell 命令行(即 Process proc = rt.exec( new String [] {"C:\\cygwin\\bin\\bash.exe", "-c", "C:\\scripts\\login.exp"});,注意我的 "-c" inserted) 它利用了脚本顶部的魔法 shebang。或者更好的是,只使用 shebang:Process proc = rt.exec( new String [] {"C:\\scripts\\login.exp"});

退出值 127 是一个特殊的退出值,告诉您“找不到命令”。这是有道理的,因为您期望脚本包含许多不存在系统二进制文件或 shell 内置命令的词。

关于Java 抛出 Process exitValue : 127 when running expect script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12113200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com