【发布时间】:2017-05-09 17:39:35
【问题描述】:
以下代码旨在在特定服务器的多个用户中执行命令。此代码未连接到每个用户,而是仅在第一个用户中运行命令。
try {
String users[] = {"sproln23", "sprsec23", "sproln52", "sprsec52"};
for(String user: users) {
JSch jsch = new JSch();
System.out.println("Checking for user :" + user);
Session session = jsch.getSession(user, "server");
session.setPassword("pass");
session.setConfig("StrictHostKeyChecking", "no");
session.connect(30000);
Channel ch = session.openChannel("exec");
((ChannelExec)ch).setCommand("whoami");
ch.setOutputStream(System.out);
ch.connect();
}
} catch (JSchException e) {
e.printStackTrace();
}
输出:
Checking for user :sproln23
Checking for user :sprsec23
sproln23
预期输出:
Checking for user :sproln23
sproln23
Checking for user :sprsec23
sprsec23
Checking for user :sproln52
sproln52
Checking for user :sprsec52
sprsec52
【问题讨论】:
-
你希望代码做什么?你想并行运行命令吗?还是要为第一个用户运行命令,等待它完成,然后再继续其他用户?
-
如果它也可以并行运行,我觉得很好。虽然,我主要关心的是在每个指定的用户中执行该命令。