Невозможно получить доступ к приглашению cmd на удаленном компьютере, используя openchannel в java - PullRequest
1 голос
/ 18 апреля 2020
I'm trying to access the cmd prompt in administrator mode and run a batch file in the remote machine,but right now I'm not able to access the cmd prompt through openchannel. Did anybody tried to access it from remote machine in java? 

Вот код

java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session = jsch.getSession(user, ip, 22);
session.setPassword(password);
session.setTimeout(timeOut);
session.setConfig(config);
session.connect();
System.out.println("session connected");
//open command prompt to run the command = "C:\\executeBatchFile.bat" file
Channel channel = (ChannelExec) session.openChannel("exec");
((ChannelExec)channel).setCommand("cmd.exe /c \"echo %cd%\"\\executeBatchFile.bat");
channel.connect();
InputStream outputstream_from_the_channel = channel.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(outputstream_from_the_channel));
String jarOutput;
 while ((jarOutput = reader.readLine()) != null)
 {
  System.out.println("Inside while loop");
  System.out.println(jarOutput + "\n");
 }
reader.close();
session.disconnect();

Ожидаемое поведение: команда set должна запускаться от имени администратора (хотя я вошел как администратор), вернуться на диск c: (cd ) и выполнить командный файл т.е. C: executeBatchFile.bat

Фактическое поведение: команда указывает путь пользователя (не как администратор), когда я печатаю jarOutput. то есть; C: \ Users \ Admin \ executeBatchFile.bat

Не могли бы вы предложить какое-либо решение по этому же вопросу?

1 Ответ

0 голосов
/ 23 апреля 2020
This has been resolved using PsExec command instead of JSCH

String pscommand=E:\\Tool\\psexec -u user -p pwd \\\\ip -s -d cmd.exe /c C:\\executescript.bat

 process = Runtime.getRuntime().exec(pscommand);

      InputStream es = process.getErrorStream();

      BufferedReader errReader = new BufferedReader(new InputStreamReader(es));
      String line;

      // Read STDOUT into a buffer.
      while ((line = errReader.readLine()) != null)
      {
        system.out.println(line);
      }

Может кто-нибудь сказать мне, как открыть приглашение cmd в режиме администратора (я вошел в систему только с учетными данными администратора, но все равно он не открывается в режиме администратора). Здесь мне нужно запустить скрипт в администратор.

...