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