Java 如何执行多个命令
我想:Java 如何执行多个命令,java,jsch,Java,Jsch,我想: 使用主机名、用户名、密码和端口号登录putty。 我已经做到了这一点 登录后,我想连接到server1。通常在腻子里我们 使用ssh命令(ssh)连接user@server1) 连接到该服务器后。我需要运行多个命令,如: df-kh ps-ef | grep www 在执行上述命令之后,我需要从 服务器1,需要登录到服务器2 我如何在JSCH中完成它 JSch jsch=new JSch(); Session session=jsch.getSession(remoteHostUser
JSch jsch=new JSch();
Session session=jsch.getSession(remoteHostUserName, RemoteHostName, remoteHostPortNo);
session.setPassword(remoteHostpassword);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
System.out.println("Please wait...");
session.connect();
System.out.println("Connected "+remoteHostUserName+"@"+RemoteHostName);
ChannelExec channel=(ChannelExec) session.openChannel("shell");
BufferedReader in=new BufferedReader(new InputStreamReader(channel.getInputStream()));
channel.setCommand("df -kh");
channel.setCommand("pwd");
channel.connect();
尝试
ChannelShell channel=(ChannelShell)session.openChannel(“shell”)代码>设置inputStream
和outputStream
并随后执行以下循环:
- 写入连接的inputStream并刷新它
- 从连接的输出流中读取
这样,您甚至可以基于第一个命令的结果构造第二个命令。为了创建交互式会话,您可以参考jsch开发人员提供的示例类
创建通道对象作为Shell的实例
即
然后设置该通道对象的输入和输出流
channel.setInputStream(System.in);
channel.setOutputStream(System.out);
然后连接频道
这样,在每次comand执行之后,通道将不会关闭,并且可以保持上一个命令的状态
使用上述代码,您可以在控制台中创建交互式会话您可以使用以下方法运行多个命令
将所有命令放在一个字符串中,用分隔符分隔
"command1;command2...."
可能的重复可能的重复
"command1;command2...."