如何检查用户是否存在于 Linux (JSch)

How to check whether user exists in Linux (JSch)

我是 Linux 机器上使用 JSch 的 connecting/creating 用户。我能够成功连接 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?.

如果您请求的是现有用户,您正在阅读将包含用户 ID 的 InputStream,但如果您请求的是不在系统中的用户,则输出将写入错误流。如果你想读取一个流,你可以修改你的命令来打印最后执行的命令的退出状态。

session.connect();
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("id -u name; echo $?");
channel.connect();

如果请求存在用户,输出有两行,第一行是用户的id,第二行是0表示执行成功,如果用户不存在则内容流将不同于 0,这意味着命令无法执行。