如何检查用户是否存在于 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,这意味着命令无法执行。
我是 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,这意味着命令无法执行。