Получить возвращаемое значение из команды screen'd

Я запускаю процесс на экране (в Ubuntu 13.10, если это имеет значение). Я могу выполнить команду на этом экране с помощью: screen -p 0 -X eval 'stuff \"$command\"\015'

Я не уверен на 100%, что делает эта команда, хотя она работает правильно. Причина этого в том, что я запускаю сервер Minecraft (все еще), и он отображается на правильном экране и выдает команду в работающей командной строке. Так что пока все хорошо.

Но я бы хотел иметь возможность запускать эту команду с возвращаемым значением. Так, например, если бы я запустил команду «список», она сообщила бы мне, сколько людей и кто находится в сети, но мне нужно зафиксировать этот вывод и поместить его куда-нибудь.

Кто-нибудь знает способ сделать это? Я не могу указать командной строке сервера minecraft перенаправить вывод куда-то еще, так как у него нет прямого доступа к командной строке, поэтому единственный способ сделать это — захватить весь вывод экрана, пока я подключен. .. но я не уверен, что это возможно.


person AndyMac    schedule 21.10.2013    source источник


Ответы (1)


Я думаю, вы можете просмотреть журналы? Вы не можете просмотреть журнал работы сервера?

person Luke Rixson    schedule 21.10.2013
comment
Не совсем так (если я не ошибаюсь). Я хочу запустить это в фоновом режиме (или просто оставить командную строку включенной), но при этом иметь возможность подключаться и отправлять/получать информацию из командной строки. В этом смысле, я полагаю, я мог бы написать пользовательскую оболочку, которая также прослушивала порт для передачи пользовательских команд и отвечала их выводом, да, это может быть своего рода ответом. Хотя... это /намного/ больше усилий, чем я собираюсь потратить на это. Надеялся, что есть способ просто получить стандартный вывод с экрана, поскольку, очевидно, есть способ прикрепить и отправить стандартный ввод. - person AndyMac; 22.10.2013
comment
изменил ответ, извините, я думал, вы ищете способ сделать это самостоятельно, я полностью осознаю, что это займет много времени, поэтому я понимаю, почему вы этого не сделаете. - person Luke Rixson; 23.10.2013
comment
Это возможность. Я мог бы ввести команду, затем немного подождать, взять последние журналы и проанализировать их на наличие ожидаемого вывода... затем снова получить, если вывода нет (ожидание фактической записи журналов, плюс возможная буферизация, я предполагать). Это сработает (и его будет намного проще реализовать, чем обертку;)), но я оставлю вопрос открытым на случай, если кто-то знает способ получить ответ напрямую. Спасибо за предложение! - person AndyMac; 23.10.2013
comment
Очень будем рады, сэр, рад, что смог хоть чем-то помочь :) - person Luke Rixson; 24.10.2013