i want to run some command on several machine using ssh. I know it can be done by just using the command "ssh user@hostname command". However, the command i want to run print some string on the console. Is there any way that send all the strings back to the console that i'm on?
Why don't you send you an email back? Or use a log file, and scp it to your current computer? otherwise, I don't know!
You could run the commands in a screen:
screen -S test
ssh user@hostname command1
ssh user@hostname2 command2
You can then detach (Ctrl-D) from the screen, let it run for however long it will run, then re-attach (screen -r test) to the screen and see all of the output. This assumes that you won't have a ton of output from the commands, however. Here's a link to a tutorial on screen.
You probably want to use Gnu Screen for this. You can start a process in a "virtual" terminal, "detach" the terminal and log out for however long you want... Then you can ssh back in and re-attach the terminal to see the console output.
ssh user@hostname command
Does just that. if 'command' outputs something, it'll show on the terminal you ran ssh from. Try e.g. ssh user@hostname ls -l
But as others have said, GNU screen is invaluable for this type of work.
Also have a look at nohup
, for example:
ssh [email protected] nohup script_that_outputs_strings.py > the_strings.txt
Then if you want to go back and monitor the progress, you could check back and tail
the file or scp
the output back to your local machine.