Diff: SshAlwaysScreen

Differences between version 4 and previous revision of SshAlwaysScreen.

Other diffs: Previous Major Revision, Previous Author

Newer page: version 4 Last edited on May 14, 2016 9:25 pm by PhilHollenback Revert
Older page: version 3 Last edited on April 20, 2016 4:17 pm by PhilHollenback Revert
@@ -1,10 +1,13 @@
-This has saved my butt many times
+This one is for the sysadmins out there. If you use this, you will never have to worry about losing long-running commands when you get disconnected from a remote server
  
-You could substitute tmux if you want , I just don 't know the equivalent of screen's <code>-D -RR</code> functionality.
+tl;dr: you should be automatically starting screen when you ssh to remote hosts. This has saved my butt many times. My script below either forces a reconnect to an existing screen session , or starts a new session if one doesn 't already exist
  
-One annoyance is double login for login failures not related to screen. 
+You could substitute tmux if you want, I just don't know the equivalent of screen's <code>-D -RR</code> functionality
  
+One small annoyance is you get double logins for login failures not related to screen. Oh wel.  
+  
+Anyway, here's my frankly not very good script. Stick it in your <code>.bashrc</code>:  
 <pre> 
 # always use screen on remote hosts if possible 
 ssh () 
 
@@ -29,7 +32,12 @@
  fi 
 
 </pre> 
  
+Anyway, like I said, this will always try to reconnect to an existing screen session, or start a new one if there isn't one on the remote host.  
+  
+I also recommend that if you run screen on your local machine too, you bind your screen prefix to <code>ctrl-B</code> instead of the default of <code>ctrl-A</code>. Then ctrl-A will always affect the remote session, not your local session. I know it sounds a little complicated, but you get used to it pretty quick. If you need to send a ctrl-A through to the remote server (for example, to go to the beginning of the line), hit <code>ctrl-A A</code>.  
+  
+If you often log on to random servers, give this a try. You won't regret it.  
 ----- 
 CategoryGeekStuff\\ 
 CategoryLinuxStuff 

version 4

This one is for the sysadmins out there. If you use this, you will never have to worry about losing long-running commands when you get disconnected from a remote server.

tl;dr: you should be automatically starting screen when you ssh to remote hosts. This has saved my butt many times. My script below either forces a reconnect to an existing screen session, or starts a new session if one doesn't already exist.

You could substitute tmux if you want, I just don't know the equivalent of screen's -D -RR functionality.

One small annoyance is you get double logins for login failures not related to screen. Oh wel.

Anyway, here's my frankly not very good script. Stick it in your .bashrc:

# always use screen on remote hosts if possible
ssh ()
{
    if [ x$1 = x ]
    then
        # ssh doesn't make sense without arguments
        echo "must supply hostname" >%2
    elif [ x"$2" = "x" ]
    then
        # only hostname specified, try to ssh and launch screen
        if ! /usr/bin/ssh -t $1 screen -A -D -RR
        then
            # if attempt to launch screen failed, fall back to regular
            # ssh
            /usr/bin/ssh $@
        fi
    else
        # if user passes more than one arg, it's something to execute
        # on remote host, and thus we don't want to launch remote
        # screen.
        /usr/bin/ssh $@
    fi
}

Anyway, like I said, this will always try to reconnect to an existing screen session, or start a new one if there isn't one on the remote host.

I also recommend that if you run screen on your local machine too, you bind your screen prefix to ctrl-B instead of the default of ctrl-A. Then ctrl-A will always affect the remote session, not your local session. I know it sounds a little complicated, but you get used to it pretty quick. If you need to send a ctrl-A through to the remote server (for example, to go to the beginning of the line), hit ctrl-A A.

If you often log on to random servers, give this a try. You won't regret it.


CategoryGeekStuff
CategoryLinuxStuff



Our Founder
ToolboxClick to hide/show