rediriger stdin à venir à partir d'un autre terminal en utilisant Bash
Je me demandais comment on allait faire à propos de la redirection de l'entrée standard stdin d'un script à partir de l'actuelle session xterm c'est à dire /dev/pts/0 pour celui qui est également en cours d'exécution je.e /dev/pts/1 à l'aide de bash? J'ai un script bash qui s'ouvre 3 xterm windows et je veux obtenir une entrée à partir d'un seul de ceux de windows et je ne peux pas comprendre comment le faire. Toute aide est appréciée! merci.
MODIFIER (Déplacé à partir de ci-dessous-OP soumis cette clarification comme réponse)
Je suppose que je devrais avoir précisé ce que je voulais faire. Je vais lancer un script à partir d'un pty, disons que c'est /dev/pts/3. Ce script va ouvrir 3 xterminals, disons: /dev/pts/0, /dev/pts/1, et /dev/pts/2. Ces 3 nouveaux pty-s sont ce que l'utilisateur va voir. Le script demande à l'utilisateur de certains et je veux l'entrée de l'utilisateur pour être tapé dans /dev/pty/1 et le programme devrait obtenir de l'info à partir de là. Cependant j'ai essayé de le faire et il ne fonctionne pas. Voici un extrait de mon code.
exec</dev/pts/1
echo
echo "Would you like to search for more info?" 1>/dev/pts/1
read answer
case $answer in
y) echo "YES" ;;
n) echo "NO" ;;
*) echo "y/n only!";;
esac
Le cas énoncé à la fin est juste un peu d'espace réservé à voir si l'entrée a effectivement travaillé.
OriginalL'auteur scorpio | 2009-03-12
Vous devez vous connecter pour publier un commentaire.
J'imagine que ce n'est pas possible. Autant que je sache, sans modifier quelque chose dans l'espace noyau, il est impossible de lire l'entrée d'un ats (ou pty) qui n'est pas l'ats. Même racine ne peut pas le faire. J'ai passé un certain temps à la recherche dans ce et j'ai été incapable de trouver comment le faire, mais j'ai trouvé beaucoup de sources affirmant que c'était impossible. Cela semble avoir été une décision de conception pour augmenter la sécurité/confidentialité des utilisateurs.
Ajout d'une baisse de voter, car après suivant @soeren lien vers ttyecho, je peux envoyer des caractères pour le stdin d'une autre ats (après chmoding l'ats et l'exécute en tant que root). Si l'affiche n'avait pas marqués ce que Linux, je pense que votre commentaire pourrait stand et est ce que j'ai entendu dans de nombreux autres endroits.
OriginalL'auteur rmeador
Vous pourriez peut-être ajuster
ttyecho
pour vos besoins?Et peut-être
ttyecho
pourrait être combiné avecnetcat
(ounc
) ouncat
(qui fait partie de nmap) pour la communication entre les différents ttys?Pour plus d'informations, voir:
OriginalL'auteur soeren
Pour répondre à vos précisé question, un moyen simple est d'utiliser une FIFO (tube nommé) pour le travail. Sur l'envoi de terminal:
Sur la réception de terminal:
Simplement imprimer un autre xterm à partir de votre propre, en recevant xterm:
Dans l'envoi de xterm:
Ou à partir d'un script dans l'envoi xterm, de rediriger stdin comme vous avez demandé:
Vous avez chmod des autorisations d'écriture sur /dev/pts/2 si votre faire sur l'ensemble des utilisateurs.
Vous ne pouvez pas capturer ce qui est imprimé sur la réception de terminal. Il n'est pas intégrée, méthode de redirection pour capturer l'entrée à partir d'un autre terminal.
Si vous voulez un moyen automatisé pour l'envoi xterm pour trouver le caractère périphérique de la réception de l'un, qui pourrait être répondu de plusieurs façons en fonction du type de communication interprocessus vous souhaitez utiliser. Un simple hack serait pour le récepteur à faire ats > fichier1 et à l'expéditeur de faire écho à ce que > $(cat fichier1).
Si vous voulez essayer et ce à partir du récepteur à la place de l'expéditeur, encore une fois, vous avez une communication interprocessus problème qui peut être résolu de plusieurs manières.
OriginalL'auteur Ian Kelling
c'est simple
vous avez juste besoin de comprendre
ls -ls /dev/pts
vous verrez
0 1 2 3 4
supposons que vous ouvrez plusieurs
utiliser un PAS de 4
et le type
chat < /dev/pts/4
ou
exec < cat /dev/pts/4
et tapez quelque chose dans la 4 e
vous savez maintenant ce qui se passe
OriginalL'auteur tCheang