Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение интерактивной программы (команды) ОС, Требуется ввод с клавиатуры 
:(
    Опции темы
EgoBrain
Дата 23.10.2012, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Надеюсь я в нужный раздел пишу.
Необходимо выполнить команду ОС из под Oracle соответсвенно спомощью Java-программы.
Нашел два примера программы, которая создает в ОС процесс и получает результат в буфер.
Что делать если такой процесс интерактивен, то есть требует ввода с клавиатуры?
Solaris 5.9, Oracle 9i.
Вообще пробиваюсь к команде passwd.

Вот пример который у меня работает (взял здесь):
Код

import java.io.IOException;
import java.io.InputStream;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

class StreamGobbler
  extends Thread {

  InputStream is;
  String type;

  StreamGobbler (InputStream is, String type) {
    this.is = is;
    this.type = type;
  }

  public void run () {
    try {
      InputStreamReader isr = new InputStreamReader(is);
      BufferedReader br = new BufferedReader(isr);
      String line;
      while ((line = br.readLine()) != null) {
        // System.out.println(type + ">" + line);
        OsUtils.result.append(line).append("\n");
      }
    } catch (IOException ioe) {
      ioe.printStackTrace();
    }
  }
}

public class OsUtils {

  public static StringBuffer result;

  public static int runCommand (String command)
    throws Throwable {

    result = new StringBuffer();

    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(command);
    // Any error message?
    StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR");
    // Any output?
    StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT");
    // Kick them off.
    errorGobbler.start();
    outputGobbler.start();
    // Any error?
    proc.waitFor();

    System.out.println(result.toString());
    return proc.exitValue();
  }
}

PM MAIL ICQ Skype   Вверх
EgoBrain
Дата 25.10.2012, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Нашел ответ здесь и здесь. Но получилось только передавать ввод с клавиатуры собственному скрипту, с системными бинарными прогами несработало. Решил пойти другим путем. Javу отмёл в сторону.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.