Отправить команду на экран терминала другого пользователя

У меня два пользователя; user1 и user2.
У меня есть сценарий bash, запущенный user1, который должен запускать команду на экране терминала, запущенного user2.
Предложения?
Благодаря
Макс

2
задан Sathya
06.05.2023 0:07 Количество просмотров материала 3699
Распечатать страницу

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 в указанный файл.)

4
отвечен grawity 2023-05-07 07:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх