Я пытаюсь написать вспомогательный скрипт для выполнения различных административных задач на сервере, которые можно выполнить только из командной строки, и пытаюсь использовать команду 'dialog' для отображения окон сообщений, входных данных, запросов пароля и т. Д., Однако , потребности этой задачи требуют от меня обработки данных в PHP.
У меня проблемы с тем, чтобы заставить команду диалога работать таким образом, и я не могу понять, что я делаю неправильно.
Вот пример здесь
К сожалению, это не работает.
Когда вы запускаете PHP и exec / backtick / system для внешнего приложения, ввод-вывод не работает так, как вы ожидаете.
Ближайшее, что я могу получить, это использовать команду passthru ():
<?php
$CMD = "dialog --menu \"Please select\" 10 40 3 backup \"Backup Files\" restore \"Restore Files\"";
passthru($CMD);
?>
Это единственный способ, которым PHP позволяет диалогу правильно использовать STDOUT, все остальное не приводит к отображению, но вы можете нажать return, чтобы выбрать опцию.
Я пробовал обратные ссылки, exec () и system (), но, похоже, ничего не работает.
Что меня удивило, так это как правильно читать STDERR из PHP, чтобы получить возвращаемое значение в переменную с именем $ result.
Я уверен, что некоторым другим системным администраторам приходилось делать это раньше.
Мои причины для того, чтобы не использовать bash для этого, состоят в том, что одна команда, которую я должен выполнить в результате выбора, производит только вывод XML, и я не могу эффективно проанализировать это в bash.