Automatic usage of screen to pass through network outages:
# Add the following line to your .bashrc # if [[ -f ~/.screens.sh ]]; then source ~/.screens.sh && screens; fi function screensNew { read -p "Enter screen name or [RETURN]: " SCREEN_NAME if [[ ! -z "$SCREEN_NAME" ]]; then echo "Starting new $SCREEN_NAME screen !"; screen -S "$SCREEN_NAME" else echo "Starting new unamed screen !"; screen fi } function screensMenu { i=1; for SCREEN_INFO in $SCREEN_INFOS; do SCREENS[ $i ]="$SCREEN_INFO"; SCREEN_IDS[ $i ]="$( echo $SCREEN_INFO | awk '{print $1}')"; echo "$i: ${SCREENS[ $i ]}"; i=$(( $i + 1 )); done; read -p "Please enter screen ID to attach or Q(uit) or [RETURN] for new screen: " SCREEN_ID; if [[ -z "$SCREEN_ID" ]]; then screensNew elif [[ "$SCREEN_ID" == [qQ] ]]; then return else if [[ ! -z "${SCREEN_IDS[ $SCREEN_ID ]}" ]]; then echo "Attaching to screen ${SCREEN_IDS[ $SCREEN_ID ]}"; screen -x -r ${SCREEN_IDS[ $SCREEN_ID ]} else echo "Screen #$SCREEN_ID not found !"; fi; fi } function screens { if [[ ! -z "$( ps x | grep SCREEN | grep -v grep | awk '{print $1}' | grep $PPID )" ]]; then return fi if [[ -z "$( screen -ls | grep 'No Sockets found' )" ]]; then echo 'Screens are available:'; SCREEN_INFOS=$( screen -ls | grep tached ); IFS=$'\n'; screensMenu else echo 'No Screen available...'; read -p "Please enter Q(uit) or anything else to start a new screen: " SCREEN_ID; if [[ "$SCREEN_ID" != [qQ] ]]; then screensNew fi fi; }