2010-11-24 3 views
0

У меня есть сервлет, запущенный в tomcat6. Я использую следующий код для выполнения команды в ubuntu Runtime.getRuntime(). Exec ("/ usr/bin/wine cmd/c some.vbs"); проблема tomcat6 запускает программу как пользователь «tomcat6», над java-командой. Таким образом, приведенные выше команды getErrorStream возвращаются как «wine: /home/randeel/.wine не принадлежит вам» Я установил «вино», используя пользователя «randeel». Есть ли обходной путь для этого?java - выполнить команду в linux

спасибо, Rana.

+1

Если вы делаете «chmod a + rwx /home/randeel/.wine», это работает? – PeterMmm 2010-11-24 08:53:19

ответ

2

Да: Вы должны переключить пользователя. Попробуйте

Runtime.getRuntime().exec("sudo -U randeel /usr/bin/wine cmd /c some.vbs"); 

Обратите внимание, что sudo запросит пароль, если вы не настроите его иначе.

Другим, более элегантным решением является запуск небольшого сервера randeel, который ждет подключения к сети. Затем он запускает команду и возвращает выход через сетевое соединение. См. Документацию для java.net.Socket.

+0

привет, когда я выполняю эту команду «sudo -l -U randeel/usr/bin/wine cmd/c some.vbs» Я получаю вывод как текст «/ usr/bin/wine cmd/c some.vbs» любое решение к тому, что? программа не запускалась. я изменил sudoers, чтобы не просить passwd. – rana123 2010-11-24 10:44:12

0

У вас есть 2 решения. 1. предоставить соответствующие разрешения на выполнение для вина, используя chmod a + x. 2. Если вы не хотите делать # 1, вам нужно запустить командную строку, которая сначала меняет пользователя, а затем запускает приложение. команда su USERNAME изменяет текущего пользователя, но требует ввода пароля. Чтобы эмулировать терминал, который вводит пароль, вы можете использовать сценарий ожидания.

Тогда вы можете запускать команду как другой пользователь. Если вы собираетесь использовать этот способ, я бы рекомендовал написать короткий сценарий оболочки, который выполняет эти 2 действия и запускает этот скрипт из java.

# 2 сложнее. Путь №1 кажется намного проще.

Смежные вопросы