将参数传递给linux进程的Jsch Java程序
我有一个名为“datasimulator”的二进制可执行文件,它运行在远程linux机器上,启动一个交互过程,用户可以在其中提供输入并获得相应的输出,如下所示-将参数传递给linux进程的Jsch Java程序,java,linux,jsch,Java,Linux,Jsch,我有一个名为“datasimulator”的二进制可执行文件,它运行在远程linux机器上,启动一个交互过程,用户可以在其中提供输入并获得相应的输出,如下所示- [root@host]$ ./datasimulator > set country USA //user passing this command Country set to USA //response from process > set country Canada Country set t
[root@host]$ ./datasimulator
> set country USA //user passing this command
Country set to USA //response from process
> set country Canada
Country set to Canada
>exit
Thank you for using datasimulator.
[root@host]$
我正在尝试使用JavaJSCH实用程序自动化这个过程,通过java程序,我可以将输入和输出传递回我的程序。虽然我能够通过JSCHSSH连接启动datasimulator,但无法将输入传递给这个模拟器进程。请帮忙。
下面是我正在尝试使用的java程序-
此程序启动数据模拟程序,但无法成功执行下一个连续命令。请发布您的java代码,否则很难判断您做错了什么我已使用java代码更新了帖子。也许可以帮助您“ps.println(“国家设置为美国”);“这不应该是
ps.println(“设置国家美国”)代码>?
JSch jsch = new JSch(); session = jsch.getSession(username, host, 22);
session.setPassword(password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel=session.openChannel("shell");
OutputStream ops = channel.getOutputStream();
ps = new PrintStream(ops, true);
channel.connect();
ps.println("cd /path/To/datasimulator/ && ./datasimulator");
ps.println("Country set to USA");
Thread.sleep(5000);
ps.println("Country set to Canada");
Thread.sleep(5000);
ps.close();
channel.disconnect();
session.disconnect();