Что Вы хотите произойти, когда команда закончена? Экранная сессия заканчивается, когда нет никаких более рабочих команд, поэтому если Вы хотите иметь в наличии сессию, необходимо будет выполнить другую команду.
Если Вы хотите иметь в наличии окно и выполнить больше команд это это, выполнить оболочку, когда начальная команда заканчивается.
screen -S webserver -dm sh -c 'launch_webserver.sh; echo $?; exec bash -i'
Если Вы хотите иметь в наличии окно только, чтобы видеть вывод, выполнить команду, которая ожидает, такой как sleep
(с почти бесконечным аргументом) или read
(ожидает, пока Вы не нажимаете Enter).
screen -S webserver -dm sh -c 'launch_webserver.sh; echo $?; read'
Если Вы хотите иметь в наличии сессию, но не окно, выполнить другую команду. Необходимо будет записать screenrc файл (который является хорошей идеей так или иначе).
screen -c /path/to/webserver.screenrc
где /path/to/webserver.screenrc
содержит
sessionname webserver
screen -t webserver launch_webserver.sh
screen -t shell bash
Необработанная обработка событий мыши с использованием файла устройства потребует:
REST
и управлять им через curl
или браузер
Но ни одно из вышеперечисленных решений не кажется безопасным ...
К счастью, есть инструменты, которые избавят вас от таких кропотливых усилий ... и предоставят вам безопасное решение вашей проблемы.
Я полагаю, что когда вы говорите, что «вы хотите управлять мышью удаленно», вы имеете в виду управление мышью, как показано в целевом графическом интерфейсе пользователя. Это сервис, предоставляемый сервером X-Windows, которым можно легко и безопасно управлять через командную строку с помощью ssh.
Простите, но я действительно не знаю, как netcat
вписывается в эту картину ...
Итак, вы могли бы просто использовать xdotool
] для имитации события мыши по ssh-соединению:
$ ssh user@machine xdotool mousemove 0 0 click 1
Да, это действительно так просто!
См .:
Как события мыши работают в Linux?
https: // stackoverflow.com / questions / 1029027 / x11-move-an-existing-window-via-command-line
Это на тот случай, если вы хотите управлять курсором мыши, как показано в целевой операционной системе. Потому что, если ваша цель - создать терминальное приложение, использующее мышь (это мышь, физически подключенная к клиенту), вам определенно следует выбрать программу, основанную на ncurses
. ncurses
использует сервер мыши терминала с открытым исходным кодом, а также может использоваться для предоставления сложного графического интерфейса через ssh и простого терминала. Кроме того, ncurses не зависит от работы x-сервера, потому что он никоим образом не влияет на мышь сервера, он просто использует мышь клиента для управления приложением.
В любом случае, если ваша цель - просто поиграть с файлами устройства linux, попробуйте отправить документ на аудиоустройство и посмотреть, как он звучит ... подойдет простой cat and pipe с привилегиями root.
Я написал более подробный ответ по существу на тот же вопрос там,но основная идея состоит в том:
Клиент:nc -l -p 4567 | uinput
Сервер:intercept -g /dev/input/by-id/usb-My-mouse-name | nc 10.1.2.3 4567
При этом используется средства перехвата -Минимальная компонуемы инфраструктуры в верхней части libudev и libevdev