Как я могу зацепиться к выводу одного терминала от другого терминала?

Это должно сделать (непротестированную) работу:

sed -sn 1p *.tex | cut -f2 -d: | xargs latex
45
21.11.2018, 23:31
8 ответов

Я столкнулся с этим названным инструментом ttylog. Это - программа Perl, доступная на CPAN здесь. Это имеет пару протестов, один являющийся этим я мог только выяснить, как подключить к терминалу, который был создан как часть кого-то ssh'ing в мое поле. Другое существо, что необходимо выполнить его с поднятыми полномочиями (т.е. корень или sudo).

Но это работает!

Например,

Первый ssh в Ваше поле в TERM#1:

TERM#1% ssh saml@grinchy

Отметьте tty этого нового терминала:

TERM#1% tty
/dev/pts/3

Теперь в другом терминале (TERM#2) выполняет эту команду:

TERM#2% ttylog pts/3
DEBUG: Scanning for psuedo terminal pts/3
DEBUG: Psuedo terminal [pts/3] found.
DEBUG: Found parent sshd pid [13789] for user [saml]

Теперь вернитесь к TERM#1 и введите материал, он обнаружится в TERM#2.

ss of terminals

Все команды, которые я попробовал, (вершина, ls, и т.д.) работали без инцидентного использования ttylog.

23
27.01.2020, 19:34
  • 1
    Точно то, что я искал (я использовал его в прошлом, но забыл имя и не могло remeber). Большое спасибо, я временно использовал грязную опцию (gdb, и произведите репликацию). –  pruzinat 14.04.2013, 02:40
  • 2
    Да, gdb была первая опция, с которой я столкнулся, я использовал ее сам в прошлом, но это - hacky мне, по крайней мере. Довольный это выручило Вас! –  slm♦ 14.04.2013, 02:43
  • 3
    ttylog, может казаться, не присоединяет к корректному процессу, хотя - может любой отвечать на мой вопрос: serverfault.com/questions/560972 / … –  LittleBobbyTables 12.12.2013, 19:05

Действительно это./dev/vcs* и/dev/vcsa* устройства соответствует/dev/tty* устройства (виртуальные терминалы). F1=tty1=vcs1/vcsa1 и так далее. vcs/vcsa похож на tty для "текущего" виртуального терминала.

Как корень, Вы можете просто кошка эти устройства (например, кошка/dev/vcs2), и видеть то, что находится на соответствующем VT (например,/dev/tty2 на на F2) как взятие снимка. vcsa* отличается от vcs* в этом, они включают информацию о размерах терминала (экран). Обратите внимание, это - просто необработанный снимок символов, поскольку они показывают на экране - собранный от памяти, выделенной терминалу - так не ожидайте хороший, легко parseble вывод.

Недостаток состоит в том, что, если информация высвечивается мимо слишком быстро, может быть трудно получить. Возможно, хвост-f/dev/vcs1 будет работать, если необходимо следовать, несколько screenfulls (не судили меня)? Может быть самым легким просто перенаправить его в файл сначала. Это может также быть хорошая идея использовать VT (F1-F6) для рассмотрения его, поскольку терминалы будут иметь те же размеры. По моему опыту, лучше использовать vcs* - не vcsa* - устройства.

Если это не работает, возможно, один из "больших brotherish" пакеты, который позволяет администратору следить за действием по терминалу, может работать.

PS: Я забыл спрашивать, что ОС Вы используете. Это для Linux, хотя аналогичные устройства, вероятно, существуют на других Ose также. Попытайтесь искать "память виртуальной консоли" среди страниц справочника для устройств.

21
27.01.2020, 19:34
  • 1
    Является там каким-либо способом ввести вход в tty1 от ssh? Например, я должен работать с выполнением пи малины Debian, но проблема состоит в том, что он имеет только один USB-порт, он поднят адаптером Wi-Fi, и таким образом, я не могу физически присоединить клавиатуру для использования tty1 с ним. Так как я должен запустить скрипт, который, во время процесса выполнения, закрывается wlan0, У меня на самом деле есть ситуация уловки - 22, пытающаяся отлаживать, где этот сценарий перестал работать. Предположим, что я не могу использовать концентратор usb... там способ для меня передать символы по каналу в/dev/tty1 так или иначе? –  Steven Lu 08.10.2014, 03:40
  • 2
    Хорошо. Я могу передать материал по каналу к /dev/tty1 как корень, но который все это делает, отобразить символы на экран, не вводят их –  Steven Lu 08.10.2014, 03:41
  • 3
    Извините, если это - просто шум. это не на действительно 100% релевантно. Но я ответил на свой вопрос в комментарии выше с этим –  Steven Lu 08.10.2014, 03:50
[

] Другой подход заключается в использовании утилиты gnu [] screen[] на вашей локальной машине. Вызовите ее с помощью опции []-L[], или начните без этой опции и используйте последовательность команд []^aH[]. Любой из этих подходов приводит к тому, что все входные и выходные данные записываются в файл с именем []screenlog.x[], где x - номер экрана.[

] [

]Это удобно, потому что на удаленной машине не нужно устанавливать ничего лишнего.[

].
1
27.01.2020, 19:34

Посмотрите на:

man 1 script

, например:

script -f /dev/tty1
18
27.01.2020, 19:34

Как указано в комментариях, необходимо исправить таблицу маршрутизации.

Синтаксис ip route add X через Y используется для трафика шлюза, т.е. если трафик к X должен быть отправлен (наибольший внешний адрес) Y . Должен быть дополнительный маршрут, как Y можно было бы связаться. Если Y является собственным адресом интерфейса и вы не решаете проблему иначе, вы создаете цикл и маршрутизацию не работает.

Необходимо, чтобы трафик на другой хост отправлялся непосредственно через интерфейс (не через шлюз). Существует множество различных возможностей, в зависимости от используемой маски сети:

ip r add 10.0.0.2/32 dev eth0    # only 10.0.0.2 should go via eth0
...
ip r add 10.0.0.0/8 dev eth0     # 10.0.0.0 - 10.255.255.255 should go via eth0
-121--100469-

Файлы vmlinuz-0-rescue- * и initramfs-0-rescue- * можно безопасно удалить с помощью rm . Они не принадлежат ни одному пакету, и, насколько мне известно, нет никакого инструмента для их удаления (хотя вы можете создать новые с помощью dracut ).

После удаления запустите

grub2-mkconfig -o /boot/grub2/grub.cfg

для регенерации конфигурации grub, чтобы они не появлялись в меню загрузки.

Эти образы являются самыми большими, кстати, потому что они не зависят от машины - они загрузятся в любой системе. В других комбинациях ядра/ramfs некоторые модули не требуются для оборудования на компьютере, на котором они были установлены, и могут не быть переносимыми в другие системы. Спасательное изображение позволяет исправить это, если необходимо.

(Для других файлов можно также удалить fedup . Они использовались при модернизации и должны были быть удалены автоматически.)

-121--69334-

Так как я не начал tty1 с экрана этот сценарий помог:

Я использовал ответ от Баарда Копперуда выше. «128» - это 1 строка моего tty1. Спящий режим может быть установлен на соответствующий номер.

#!/bin/bash
while true
do
    sudo tail -c 128 /dev/vcs1 && echo ""
    sleep 10
done

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

1
27.01.2020, 19:34

У меня сработало:

  • Используя клавиатуру на компьютере «A» (то есть физическом компьютере, которым нужно управлять), выполните: screen -q

  • Подключиться с помощью ssh с компьютера «B» на компьютер «A». ".

  • В сеансе ssh введите: screen -ls , чтобы получить идентификатор сеанса для подключения (4 цифры в строке, содержащей tty ).

  • Подключитесь к вышеуказанному сеансу с помощью: screen -x ... используя номер идентификатора сеанса, полученный из приведенной выше команды screen -ls .

Все, что введено в любом «сеансе», произойдет в обоих «сеансах», поэтому, например, ввод screen -d приведет к выходу ОБЕИХ сеансов.

2
27.01.2020, 19:34

Открыть две клеммы. Введите ttyв каждом, и вы получите его id как/dev/pts/nº

Затем в первом вы вводите script -f /dev/pts/nºofSecondTerminal, а во втором делаете противоположное script -f /dev/pts/nºofFirstTerminal, чтобы они были связаны

Поздравляю! Оба терминала выводят и принимают одно и то же. Нужен третий? Ну, вы изучали комбинации? Вам понадобится 6 script -fкоманд. Еще больше тти? Так далее...

1
27.01.2020, 19:34

Используйте команду ttyв каждом терминале, чтобы идентифицировать их:

$ tty
/dev/pts/0

$ tty
/dev/pts/1

Предполагая эти TTY, чтобы перенаправить стандартный вывод первого на второй, запустите это в первом терминале:

exec 1>/dev/pts/1

Note: Now every command output will show on pts/1

Чтобы восстановить поведение по умолчанию, стандартный вывод pts/0:

exec 1>/dev/pts/0

См. это видео для демонстрации.

8
27.01.2020, 19:34

Теги

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