Я пытаюсь написать код Java, который подключается к рабочей станции Linux, выполняет команду с sudo, а затем блокирует, пока команда не будет завершена.Выполнение команды sudo по j2ssh
session.getOutputStream().write("sudo -s \n".getBytes());
session.getOutputStream().write(command.getBytes());
session.getOutputStream().write("\n exit\n".getBytes());
IOStreamConnector output = new IOStreamConnector();
java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();
output.connect(session.getInputStream(), bos);
String theOutput = bos.toString();
, похоже, не ждет завершения программы или возврата назад.
session.executeCommand(command);
IOStreamConnector output = new IOStreamConnector();
java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();
output.connect(session.getInputStream(), bos);
session.getState().waitForState(ChannelState.CHANNEL_CLOSED);
theOutput = bos.toString();
Хорошо работает, но не с судо. Я попытался установить команду:
«su -c \» touch/tmp/whatever \ "" (касание не является той командой, которую я запускаю, просто используя ее для тестирования). Это не работает.
"sudo touch/tmp/whatever" Это не работает.
Какая магическая формула для этого ???? Заранее спасибо.
ли он ожидает пароль для команды Sudo? – user489041
Нет, он не ждет пароля. Я не настроил пароль в файле sudoers. Но спасибо за предложение. – caris