После запуска сценария ниже java -
suu -t -r "reason" <user_name>
Он запросил у меня пароль, и я ввел его. После этого программа работала, но не выполняла никаких дальнейших команд.
Я хочу выдать себя за Linux машину через Java (библиотека Jsch). Я не получаю никаких ошибок, но после того, как пароль задан, он успешно входит в систему, а затем никакие команды не выполняются.
Это ссылка, по которой я следовал, чтобы написать код - https://linuxconfig.org/executing-commands-on-a-remote-machine-from-java-with-jsch
После запуска команды suu я хочу прочитать файл. Без запуска suu у меня не будет доступа к этому пути. Любая помощь по этой проблеме будет более ценной:)
Вот мой фрагмент - [! [Введите описание изображения здесь] [1]] [1]
Заранее спасибо!
Ниже приведен код, который я использовал -
public class SSHConn {
static Session session;
static String suCmds = "suu -t -u \"reason\" simba";
static String[] commands = {"whoami", suCmds};
public static void main(String[] args) throws Exception {
open();
runCmd(commands);
close();
}
public static void runCmd(String[] commands) throws JSchException, IOException {
for (String cmd : commands) {
System.out.println("\nExecuting command: " + cmd);
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(cmd);
InputStream in = channel.getInputStream();
OutputStream out = channel.getOutputStream();
channel.connect();
//passing creds only when you switch user
if (cmd.startsWith("suu -")) {
System.out.println("Setting suPasswd now....");
out.write((Constants.suPasswd + "\n").getBytes());
out.flush();
System.out.println("Flushed suPasswd to cli...");
}
captureCmdOutput(in, channel);
channel.setInputStream(null);
channel.disconnect();
}
}
public static void captureCmdOutput(InputStream in, Channel channel) throws IOException {
System.out.println("Capturing cmdOutput now...");
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) {
System.out.println(ee.getMessage());
}
}
}
public static void open() throws JSchException {
JSch jSch = new JSch();
session = jSch.getSession(Constants.userId, Constants.host, 22);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(Constants.userPasswd);
System.out.println("Connecting SSH to " + Constants.host + " - Please wait for few seconds... ");
session.connect();
System.out.println("Connected!\n");
}
public static void close() {
session.disconnect();
System.out.println("\nDisconnected channel and session");
}}