我想:
df -kh ps -ef | grep www
我怎样才能在JSCH中做到这一点?
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();
答案 0 :(得分:1)
尝试{object-id}/comments
设置ChannelShell channel = (ChannelShell) session.openChannel("shell");
和inputStream
,然后执行以下循环:
这样你甚至可以根据第一个命令的结果构建你的第二个命令。
答案 1 :(得分:0)
为了创建交互式会话,您可以参考由jsch开发人员提供的Example类。
http://www.jcraft.com/jsch/examples/UserAuthKI.java
将Channel对象创建为Shell的实例 即
Channel channel=session.openChannel("shell");
然后为该Channel对象设置输入和输出流。
channel.setInputStream(System.in);
channel.setOutputStream(System.out);
然后连接频道。
这样,在每次执行命令后,通道都不会被关闭,上一个命令的状态可以保持不变。
使用上述代码,您可以在控制台中创建交互式会话
答案 2 :(得分:0)
您可以使用以下方法
运行多个命令将所有命令放在以;;
分隔的字符串中"command1;command2...."