我正在使用JSch在Linux计算机中连接/创建用户。我能够成功连接Linux机器并创建用户。但是在创建用户时,我无法检查该用户是否已经存在于计算机中。为此,我尝试了以下命令:id -u name
我的实现是:
System.out.println("Connected");
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand("id -u name");
channel.setInputStream(null);
((ChannelExec)channel).setErrStream(System.err);
InputStream in=channel.getInputStream();
channel.connect();
但是它不能告诉您它是对还是错。如何使用JSch来检查Linux中是否存在用户?
答案 0 :(得分:1)
如果您要查询现有用户,那么您正在读取的InputStream
将具有用户ID,但是如果您要查询的用户不在系统中,则输出将被写入错误流。如果要读取一个流,则可以修改命令以显示最后执行的命令的退出状态。
session.connect();
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("id -u name; echo $?");
channel.connect();
如果您请求存在用户,则输出将有2行,第一行将是用户的ID,第二行将是0,这表示执行成功(如果用户不存在流的内容)将不同于0,表示命令无法执行。