Ist es möglich, Daten an die Shell eines anderen Pseudo-Terminals zu senden?

9

Dieses Bild zeigt, wie Pseudo-Terminals funktionieren:

Geben Sie hier die Bildbeschreibung ein

Wenn zwei Terminalemulatoren geöffnet sind, kann ich die Zeichenfolge "Hello"vom ersten Terminalemulator an den zweiten Terminalemulator senden :

echo "Hello" > /dev/pts/1

Wenn dieser Befehl ausgeführt wird, wandert die Zeichenfolge "Hello"von der Slave-Seite des zweiten Pseudo-Terminals zur Master-Seite des zweiten Pseudo-Terminals und wird dann auf dem Emulator des zweiten Terminals angezeigt.

Ist es nun möglich, Daten in die entgegengesetzte Richtung zu senden, dh Daten an die Shell anstelle des Terminalemulators (oder an den Prozess, den die Shell ausführt) zu senden?

John
quelle
1
Das TIOCSTI ioctl könnte relevant sein (vorausgesetzt, Sie haben root oder die entsprechenden Fähigkeiten) ...
Thrig
1
Ich denke, diese Frage wurde mehrmals gestellt (ich kann sie nicht am Geldautomaten finden), und die Antwort war bisher "keine einfache Möglichkeit, Eingaben in die Shell zu fälschen".
Dirkt
1
Versuchen Sie, Befehle im anderen Terminal auszuführen oder nur Textdaten dort abzulegen? Die Befehlszeilenprogramme Write , Talk und Wall (wie in "Write to All") können dies tun.
Adam Katz

Antworten:

-1

Jeder Prozess verfügt über 3 Standard- "Dateideskriptoren".

0 is stdin  (standart input)
1 is stdout (standart output)
2 is stderr (standart error output)

Sie müssen die PID des Shell-Prozesses ermitteln und können dann Folgendes tun:

echo "test" > /proc/{your_shell_pid}/fd/1

Dadurch wird der Test in der Standardausgabe des Shell-Prozesses gedruckt

Ilya Marchenko
quelle