Я пытаюсь подключиться к хосту, а затем изменить пользователя с помощью «su-john», а затем выполнить команду как john. Можно ли использовать только JSch?Java JSch меняет пользователя на удаленном компьютере и выполняет команду
Проблема заключается в том, что после создания сеанса и открытия канала и выполнения вышеупомянутой команды он должен запрашивать пароль, но ничего не происходит.
Это, как я подключиться к удаленной машине:
String address = "myremote.computer.com";
JSch jsch = new JSch();
String user = "tom";
String host = address;
String password = "l33tpaSSw0rd";
Session session = jsch.getSession(user, host, 22);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(password);
session.connect();
Затем я выполнять команды с помощью runSshCommand()
метода, который выглядит следующим образом:
try
{
Channel channel = session.openChannel("exec");
channel.setInputStream(null);
channel.setOutputStream(System.out);
((ChannelExec) channel).setCommand(command);
channel.connect();
InputStream in = channel.getInputStream();
byte[] tmp = new byte[1024];
while (true)
{
while (in.available() > 0)
{
int i = in.read(tmp, 0, 1024);
if (i < 0)
{
break;
}
System.out.print(new String(tmp, 0, i));
}
if (channel.isClosed())
{
break;
}
try
{
Thread.sleep(1000);
}
catch (Exception ee)
{
}
}
channel.disconnect();
}
catch (Exception e)
{
e.printStackTrace();
}
Должен ли я создать еще один канал, когда я изменить пользователей или как это сделать?
Потому что, если я использую
runSshCommand("su - john",session);
runSshCommand("tail -1 ~/mylog.log",session);
он просто выполняет команду «су», но он не кончает изменение пользователей и после выполнения «хвост» приведет к ошибке, потому что «Томь» hasn» t получил файл:/
В принципе, я хотел бы, чтобы мое приложение подключалось к машине, меняло пользователя, читало один файл и возвращало данные. Может ли кто-нибудь пролить свет, пожалуйста?