Linux Terminal – How to Send Commands to Another Terminal

command linelinuxterminal

I have this setup where I have computer with ssh and a display where I have a user logged in to terminal. What I want to do is send commands like I was using that local session with keyboard. I tried to echo to /dev/tty1 but it just shows what I typed instead executing it. Which makes sense. The system only has bash so no GUI or anything like that.

Best Answer

The TIOCSTI ioctl can inject characters into a terminal, or see instead uinput on Linux to generate keyboard (or mouse!) input.

  • ttywrite.c - sample C implementation
  • Term::TtyWrite - Perl implementation

    $ sudo perl -MTerm::TtyWrite \
      -e 'Term::TtyWrite->new("/dev/pts/2")->write("echo hi\n")'
    
Related Question