Run ssh and immediately execute command
ssh -t 'command; bash -l'
will execute the command and then start up a login shell when it completes. For example:
ssh -t [email protected] 'cd /some/path; bash -l'
This isn't quite what you're looking for, but I've found it useful in similar circumstances.
I recently added the following to my $HOME/.bashrc
(something similar should be possible with shells other than bash):
if [ -f $HOME/.add-screen-to-history ] ; then
history -s 'screen -dr'
fi
I keep a screen
session running on one particular machine, and I've had problems with ssh
connections to that machine being dropped, requiring me to re-run screen -dr
every time I reconnect.
With that addition, and after creating that (empty) file in my home directory, I automatically have the screen -dr
command in my history when my shell starts. After reconnecting, I can just type Control-P Enter and I'm back in my screen session -- or I can ignore it. It's flexible, but not quite automatic, and in your case it's easier than typing tmux list-sessions
.
You might want to make the history -s
command unconditional.
This does require updating your $HOME/.bashrc
on each of the target systems, which might or might not make it unsuitable for your purposes.