У меня есть два пользователя; user1 и user2. Мне выполнял сценарий удара user1, который должен выполнить команду на экранном терминале, запущенном user2. Предложения? Спасибо Max
В случае screen
, можно использовать
screen -S user2/sessionname -p windowname -X stuff "~user1/somescript.sh
"
Это введет текст ~user1/somescript.sh
(относящийся к файлу в корневом каталоге user1) к определенному окну данной экранной сессии и отправляют символ новой строки.
(Да, второе "
должен быть в новой строке, иначе Вы просто отправили бы текст и имели бы для нажатия возврата на экранной сессии. С другой стороны, используйте $'stuff blah\n'
)
Чтобы сделать это, у Вас должен будет быть доступ для записи к user2/sessionname
; прочитайте страницу руководства экрана для описания multiuser
и acladd
.
В универсальном "выполненном материале на другом tty" случай, можно использовать writevt /dev/pts/X sometext
; writevt
инструмент является частью пакета консольных инструментов. Если Ваш дистрибутив использует kbd вместо этого, добраться writevt.c
. Это характерно для Linux.
./somescript.sh >& /dev/pts/X
где /dev/pts/X
tty устройство, которое принадлежит экрану user2.
Вам будет нужен доступ для записи; это может быть дано user2 с chmod/setfacl, или можно использовать sudo
.
(>& file
эквивалентно > file 2>&1
, который перенаправляет и stdout и stderr в данный файл.)