linux - écrit des commandes d'un terminal à un autre
J'ai besoin d'écrire des commandes à partir d'un terminal à un autre terminal.
J'ai essayé ces:
echo -e "ls\n" > /proc/pid/fd/0
echo -e "ls\n" > /dev/pts/4
Qui imprime juste le ls
de la production et ne veut pas s'exécuter.
J'ai essayé ces:
chmod 777 /dev/tty4 ;echo "ls" > /dev/tty4
chmod 777 /dev/tty40 ;echo "ls" > /dev/tty40
Qui ne semblent pas faire quelque chose
Des idées?
[notez que je ne veux pas toucher le deuxième terminal pour effectuer cette opération. seul le premier]
source d'informationauteur user1364700
Vous devez vous connecter pour publier un commentaire.
Code Python:
C'est poilu. Le stdin de fichier proc vous essayez d'utiliser est un lien symbolique vers le terminal (probablement /dev/pts/quelque chose). Il y a deux processus qui ont cet appareil ouvert: le shell (votre cible) et l'émulateur de terminal (par exemple, gnome-terminal), et ils l'utilisent comme un socket pour transmettre des données dans les deux directions. Sans doute ce dernier est en train de voler la sortie et l'affichage, de sorte que le shell ne la voit jamais. Je ne pense pas que cette technique fonctionne.
Ce que vous voulez accomplir? Vous ne pouvez pas exécuter le processus comme un enfant à l'aide des outils traditionnels comme popen()? Si c'est une interface graphique émulateur de terminal, vous pouvez essayer de forger entrée au clavier par l'intermédiaire de X des événements ou le noyau du uinput API.
l'ouverture de 2 bornes
tapez ttd sur le terminal de laquelle vous souhaitez écrire sur
ttd vous montrera l'adresse du terminal
déplacer vers un autre terminal et tapez cat > (l'adresse du terminal 2e)
et appuyez sur entrée
regardez:
par exemple:
C'est la mauvaise façon de le faire - vous pourriez l'obtenir affichés dans l'
terminal, mais pas exécuté.
Vous aurez besoin de faire quelque chose comme dire à un shell pour lire à partir d'un tube nommé, ou de netcat/socat. Ou vous pourriez essayer l'injection de frappes en tant que root ou à l'aide de xtest (il y a aussi parfois une autre façon sous X que j'oublie).
commande > dev/pts/#
où # est l'autre borne du nom