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

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

3
задан 25.05.2011, 10:07

1 ответ

Вы хотите, чтобы это посмотрело, как будто user2 ввел команду?

В случае 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.

Или Вы просто хотите, чтобы user2 видел вывод?

./somescript.sh >& /dev/pts/X

где /dev/pts/X tty устройство, которое принадлежит экрану user2.

Вам будет нужен доступ для записи; это может быть дано user2 с chmod/setfacl, или можно использовать sudo.

(>& file эквивалентно > file 2>&1, который перенаправляет и stdout и stderr в данный файл.)

4
ответ дан 08.12.2019, 00:32

Теги

Похожие вопросы