Как проверить, существует ли пользователь в Linux (JSch) - PullRequest
1 голос
/ 19 июня 2019

Я подключаюсь / создаю пользователей на Linux-машине, используя JSch. Я успешно могу подключить 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?.

1 Ответ

1 голос
/ 19 июня 2019

Вы читаете InputStream, который будет иметь идентификатор пользователя, если вы запрашиваете существующего пользователя, но если вы запрашиваете пользователя, которого нет в системе, выходные данные будут записаны в поток ошибок. Если вы хотите прочитать один поток, вы можете изменить свою команду для вывода статуса завершения последней выполненной команды.

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

Вывод, если вы запрашиваете существующего пользователя, будет иметь 2 строки, первая будет идентификатором пользователя, а вторая будет 0, что означает, что выполнено успешно, если у пользователя нет содержимого потока будет отличаться от 0, что означает, что команда не выполнена.

...