php ssh linux экран exec - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь опубликовать строку комментариев с PHP в Linux.Первым делом я создал новый экран:

exec('screen -dmS stresstest.session');

Это работает без проблем.После этого я хочу вывести, например, IP-адрес;

exec('screen -S stresstest.session -X stuff "ip addre $(echo -ne \'\\r\')"');

Вот где проблема возникает;Каким-то образом невозможно прокомментировать вторую строку кода после первой.

Если бы я сделал экран Linux с моим пользователем root и потом использовал php, чтобы сделать несколько раз «ip addre», это работает как шарм.Когда я создаю экран с помощью php и пробую вторую строку кода, он не работает.

В чем здесь проблема?Я думаю, что это как-то связано с разрешениями, верно?

Не было ошибок.Казалось, что скрипт работает нормально, но php не выполняет вторую и третью команды.

Спасибо за ваш ввод.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я создаю устройство стресс-тестирования для звездочки в PHP.Смысл в том, чтобы создать цикл и вызывать на каждом новом экране номер телефона.Таким образом, я хочу проверить, как далеко может зайти Asterisk.

Я исправил проблему.Я был не прав, это никак не связано с разрешениями.

Мне просто нужно было выбрать первый экран.

-p 0

Этот сделал это для меня.

RUN_PJSUA       =    'screen -S stresstest.session -p 0 -X stuff "ip addre $(echo -ne \'\\r\')"';

Спасибо!

0 голосов
/ 23 мая 2018

Нумерация окон экрана начинается с 0. Попробуйте вместо -p 0.

Кроме того, параметр -X отправляет команду самому процессу screen не в буфер, управляемый screen.

Если вы выполняете эти команды в двух терминалах:

  1. Терминал 1: screen -dmS test
  2. Терминал 2: screen -x test (это присоединится к вашему новому test экран)
  3. Терминал 1: screen -S test -X echo message

Вы увидите сообщение "message" в буфере экранных сообщений (обычно в последней строке консоли, где выводится^A w и т. Д.).

Я не вижу способа вызвать команду или вставить содержимое непосредственно в буфер рабочего экрана.

Самое близкое, что я могу придумать, это определить, какойPTY ассоциируется с вашим сеансом бегового экрана и передает что-то непосредственно этому.Не уверен, как вы работаете, что является правильным программно, хотя: -)

Внутренний экран:

$ tty
/dev/ttys002

Внешний экран:

$ echo message >/dev/ttys002

Я думаюЭто, вероятно, слишком далеко от того, что вы хотели!Чего вы на самом деле пытались достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...