Я хочу перенести файл из окна в ящик unix (linux) с помощью Java, а затем перейти на суперпользователя. Я пробовал использовать библиотеку JSCH, то есть SFTP с java.
Я застрял на этапе перехода на суперпользователя.
Шаги, которые я выполнил, аналогичны как передать файл через SFTP в java?
Я знаю, что задавались похожие вопросы, но я не могу сменить пользователя, используя этот подход.
Просьба не отмечать это как повторяющееся.
Может ли кто-нибудь помочь мне с шагами или любым другим подходом? Пример был бы полезен для того же. Заранее спасибо.
Редактировать-1 - образец сниппета из ссылки как передать файл через SFTP в java?, который используется как ссылка, размещенная
public void send (String fileName) {
String SFTPHOST = "host:IP";
int SFTPPORT = 22;
String SFTPUSER = "username";
String SFTPPASS = "password";
String SFTPWORKINGDIR = "file/to/transfer";
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
System.out.println("preparing the host information for sftp.");
try {
JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
System.out.println("Host connected.");
channel = session.openChannel("sftp");
channel.connect();
System.out.println("sftp channel opened and connected.");
channelSftp = (ChannelSftp) channel;
channelSftp.cd(SFTPWORKINGDIR);
File f = new File(fileName);
channelSftp.put(new FileInputStream(f), f.getName());
log.info("File transfered successfully to host.");
} catch (Exception ex) {
System.out.println("Exception found while tranfer the response.");
}
finally{
channelSftp.exit();
System.out.println("sftp Channel exited.");
channel.disconnect();
System.out.println("Channel disconnected.");
session.disconnect();
System.out.println("Host Session disconnected.");
}
}
Благодаря этому я могу подключиться к удаленной системе, но не могу изменить пользователя.
Редактировать-2: Проведя еще несколько исследований, я обнаружил, что использование SFTP с JSCH api может помочь мне передать файл, но нет сменит пользователя. Если я изменю канал на «exec», я могу сменить пользователя, но оба они не будут работать в одном сеансе. Так что оба не работают одновременно.
Есть ли другой способ (возможно, SSH, передача SCP?)
Так что вопрос остается нерешенным - хотите передать файл и сменить пользователя через Java.
Спасибо, Николас. Попробую опубликовать ссылку. Я уже разместил ссылку, которую опробовал. Поскольку код похож, я избегал копировать и вставлять. stackoverflow.com/questions/14830146/…
Покажите нам код, который вы пробовали, а не ссылку!
Отредактировали мой qs. Надеюсь, это поможет. Спасибо
Мой голос "против" удален. Что вы хотите делать после перехода на суперпользователя?
Спасибо. Скопируйте в другой каталог с правами суперпользователя.
Почему бы просто не войти в систему как суперпользователь?
Ссылка, которую вы указали в 1-м комментарии, не сработала. Проблема не в том, чтобы войти в систему / перейти на суперпользователя, мне также нужно передать файлы в том же сеансе, что не работает. Также опубликовали рассматриваемые правки. Спасибо




Вам нужно будет показать нам, что вы пробовали, чтобы мы могли помочь! Вы пробовали это