行き詰まっていた問題に新しいアプローチを試みています。私のSSH接続にexpect4jを使用する代わりに(消費者の実行をブロックし、閉鎖の問題を回避する方法を理解できませんでした。知識があり、聖人だと感じている場合は、それに関する詳細について過去の投稿を参照してください)。期待スクリプトを使用してみてください。button.onclick にコード化されたランタイム exec があります。以下を参照してください。終了値が 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