Вопрос по redirect, stdin, linux, terminal – linux - записывать команды с одного терминала на другой

11

Мне нужно писать команды с одного терминала на другой терминал.

Я попробовал это:

echo -e "ls\n" > /proc/pid/fd/0
echo -e "ls\n" > /dev/pts/4

Который просто печатаетls в качестве вывода и не выполняется.

Я попробовал это:

chmod 777 /dev/tty4 ;echo "ls" > /dev/tty4
chmod 777 /dev/tty40 ;echo "ls" > /dev/tty40

Который, кажется, ничего не делает

Есть идеи?

[обратите внимание, что я не хочу касаться второго терминала для достижения этой цели. только первый]

Что ты такоеreally пытаешься сделать? Это может быть ваша логика для попытки это в первую очередь является ошибочным; Там может быть более простое решение, чтобы получить тот же результат. Кроме того, терминалы работают в отдельных процессах, поэтому вам нужна некоторая формаinterprocess communication чтобы заставить их говорить друг с другом. user849425

Ваш Ответ

7   ответов
1

затем наберите ttd на терминале, на котором вы хотите написать ttd покажет вам адрес терминала перейдите к другому терминалу и введите cat & gt; (адрес 2-го терминала) и нажмите ввод

Error: User Rate Limit Exceeded
8

#!/usr/bin/python

import sys,os,fcntl,termios
if len(sys.argv) != 3:
   sys.stderr.write("usage: ttyexec.py tty command\n")
   sys.exit(1)
fd = os.open("/dev/" + sys.argv[1], os.O_RDWR)
cmd=sys.argv[2]
for i in range(len(cmd)):
   fcntl.ioctl(fd, termios.TIOCSTI, cmd[i])
fcntl.ioctl(fd, termios.TIOCSTI, '\n')
os.close(fd)
Error: User Rate Limit Exceeded
0

терминал, но не выполнен.

Вам нужно будет сделать что-то вроде указания оболочки для чтения из именованного канала или из netcat / socat. Или вы можете попробовать вводить нажатия клавиш в качестве пользователя root или использовать xtest (иногда под X также есть другой способ, который я забыл).

Error: User Rate Limit Exceeded user1364700
3

с помощью следующего скрипта., И он работает со всеми консольными программами, включая редакторы. Например делать:

execmon.bash  'nano hello.txt' 5

Откройте редактор, и вывод, и введенный нами текст будут перенаправлены на виртуальный терминал № 5. Вы можете увидеть свои терминалы:

ls /dev/pts

Каждый виртуальный терминал имеет связанный номер.

Это работа с обычным терминалом, konsole и xterm, просто создайте файл execmon.bash и поместите это:

#! / bin / bash
# execmon.bash
# Script to run a command in a terminal and display the output
# in the terminal used and an additional one.
param = $ #
if [$ param-eq 2]; Then
    echo $ 1 | tee a.out a.out && cat> / dev / pts / $ 2 && exec `cat` a.out | tee / dev / pts / $ 2 && rm a.out
else
    echo "Usage:"
    echo "execmon 'command' num '
    echo "-command is the command to run (you have to enter ')"
    echo "-num is the number of virtual console to output to the"
fi

Пример:

execmon.bash 'ls-l' 5
execmon.bash 'nano Hello.txt' 5
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded user1364700
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

посмотри на:

man 1 script

например:

script -f /dev/tty1
Error: User Rate Limit Exceeded
2

который вы пытаетесь использовать, является символической ссылкой на терминальное устройство (вероятно, / dev / pts / что-то). Естьtwo процессы, у которых открыто это устройство: оболочка (ваша цель) и эмулятор терминала (например, gnome-терминал), и они используют его как сокет для передачи данных в обоих направлениях. Предположительно, последний крадет вывод и отображает его, поэтому оболочка его никогда не видит. Я не думаю, что этот метод будет работать.

Что вы пытаетесь достичь? Вы не можете запустить процесс как ребенок, используя обычные инструменты, такие как popen ()? Если это эмулятор терминала с графическим интерфейсом, вы можете попытаться подделать ввод с клавиатуры через события X или API uinput ядра.

Error: User Rate Limit Exceeded user1364700
-1

Error: User Rate Limit Exceeded

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