«Совместное использование экрана» в командной строке?

$ echo 'Open ports are:';nmap localhost -oG -|grep -oP '[0-9]*(?=/open)'
Open ports are:
22
6000
2
13.08.2016, 07:32
6 ответов

Я только что наткнулся на эту опцию вman script:

-f      Flush output after each write. This is nice for telecooperation:
        One person does ‘mkfifo foo; script -f foo’ and another can
        supervise real-time what is being done using ‘cat foo’.

Я еще не играл с этим, но похоже именно то , что я искал. Играя с ним, можно установить, передаются ли также цвет и т. д.

4
27.01.2020, 21:49

Есть команда screen. Я думаю, это именно то, что вы ищете. https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

Важной информацией для вас является то, что более одного пользователя могут прикрепить к одному экрану

1
27.01.2020, 21:49

Хорошо, совместное использование экрана с screen возможно, но более опасно, чем я думал.

  1. Требуется, чтобы screen был установлен в качестве идентификатора root, чтобы он мог получить доступ к сокетам других пользователей. (Можно подумать, что это можно заставить работать только с setgid, но я не проверял, можно ли скомпилировать screen таким образом .)
  2. Документация для многопользовательских команд немного легковесна, а это означает, что ее настройка не так проста. Кроме того, хотя вы можете установить ACL для других пользователей, похоже, не существует опции для печати текущих ACL.

Тем не менее, я смог заставить его работать для некоторых значений «работа».

Сначала убедитесь, что у него достаточно прав, и исправьте разрешения для / var / run / screen :

chmod u+s /usr/bin/screen
chmod 755 /var/run/screen

Затем объедините некоторые команды конфигурации в файл:

$ cat shared.screen.rc
multiuser on
aclumask ?-wx
aclumask ??-wx
addacl foo
aclchg foo -x ?
aclchg foo +x detach,help,next,prev,windows,info,select

multiuser включает многопользовательский режим, aclumask ограничивает доступ по умолчанию для всех пользователей, затем addacl разрешает (весь) доступ пользователю foo . Команды aclchg удаляют доступ на выполнение ( -x ) для всех команд (? ), а затем мы снова разрешаем некоторые безопасные команды.

Затем, запустив screen -c shared.screen.rc , создается экран, к которому пользователь foo может присоединиться:

foo$ screen -ls bar/
There is a suitable screen on:
        18839.pts-2.test        (08/21/16 22:09:07)     (Multi, detached)
foo$ screen -r bar/

Запись на экран и использование большинства команд результат в ошибке. Однако режим копирования, похоже, работает. Кроме того, начальный экран с screen -rd bar / , поскольку пользователь, не владеющий правами, выталкивает пользователя-владельца, даже если вы думаете, что это невозможно. screen -RRD тоже работает, и выходит из системы первоначального пользователя. Даже если вы можете запретить pow_detach и detach (что должно быть интересным для второго пользователя), похоже, это не влияет на это. Занимательный.

Конечно, если вы не против и готовы позволить другим пользователям возиться с вашим экраном, достаточно использовать multiuser на и addacl foo . Не то чтобы я говорю, что вам следует.

0
27.01.2020, 21:49

Многие предлагали экран . Экран несколько староват, да и плоховат. Я предлагаю tmux .

Чтобы создать сеанс, просто запустите tmux new -s

Затем, чтобы другой человек подключился к этому сеансу, все, что ему нужно сделать, это запустить tmux a -t , следя за тем, чтобы имя оставалось прежним.

Чтобы выйти из сеанса, нажмите Ctrl - b , затем d .

Обратите внимание: все это должно выполняться на одном сервере / компьютере.

5
27.01.2020, 21:49

Вы можете использовать тройник , чтобы направить свой вывод на терминал другого человека, если вы знаете, какой терминал он использует.

Вы можете использовать команду w , чтобы узнать терминал:

user4@myubuntu:~$ w
 16:41:36 up 13 min,  4 users,  load average: 0.55, 0.60, 0.46
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user1    :0       :0               16:28   ?xdm?   6:28   0.03s gdm-session-worker [pam/gdm-password]
user2    pts/1    :0               16:38    2:46   0.04s  0.04s bash
user3    pts/7    :0               16:38    1:32   0.09s  0.09s bash
user4    pts/8    :0               16:41    4.00s  0.05s  0.00s w

Я user4 на терминале pts / 8 . Если я хочу отправить свой вывод на user2 на терминале pts / 1 , я использую следующую команду для запуска новой оболочки:

$ bash | tee /dev/pts/1

Затем весь вывод моих последующих команд (но не ввод) будет скопирован на терминал user2 . Если вы закончили, просто нажмите Ctrl-D , чтобы завершить работу оболочки.

Если вы хотите отправить сообщение или текст другому пользователю, вы можете использовать команду write :

$ write <username>
hello, are you there ? 
Ctrl-d
2
27.01.2020, 21:49

kibitz-позволяют двум и более людям взаимодействовать с одной оболочкой.

Я думаю, это то, что вы ищете!

Выполнить

yum install tcl expect

чтобы получить и использовать кибиц %user.

0
05.03.2020, 14:27

Теги

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