-#!/bin/bash
-# I, Ian Kelling, follow the GNU license recommendations at
-# https://www.gnu.org/licenses/license-recommendations.en.html. They
-# recommend that small programs, < 300 lines, be licensed under the
-# Apache License 2.0. This file contains or is part of one or more small
-# programs. If a small program grows beyond 300 lines, I plan to switch
-# its license to GPL.
-
-# Copyright 2024 Ian Kelling
-
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-
-# http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-
-set -e; . /usr/local/lib/bash-bear; set +e
-
-remote=$1
-fastcon=0
-while true; do
- start=$EPOCHSECONDS
- if ! ssh-add -l | grep SHA256:YEhwH5u+wkqkSl/dCq8rFebi2qz7Os3RmIWPxMg13eA &>/dev/null; then
- ssh -n $remote
- fi
- # -n or else it competes with the other ssh for reading stdin.
- # -l iank is just a safety measure against misconfig/temporary config in .ssh/config.
- ssh -l iank -n $remote -- prof-tail -r |& prof-notify &
- ssh -l iank -t $remote tmux -L profanity a ||:
- builtin kill %% &> /dev/null ||:
- if (( EPOCHSECONDS > start + 600 )); then
- fastcon=0
- fi
- # we try to reconnect quickly for a while (just once as I write this),
- # then try to reconnect slowly.
- if (( fastcon < 1 )); then
- echo "waiting 10. any key to cancel"
- read -rsN1 -t 10 ||:
- fastcon=$((fastcon+1))
- else
- echo "waiting 120. any key to cancel"
- # like sleep but stop on any input
- read -rsN1 -t 120 ||:
- fi
-done