host info updates
[distro-setup] / prof-remote
1 #!/bin/bash
2 # I, Ian Kelling, follow the GNU license recommendations at
3 # https://www.gnu.org/licenses/license-recommendations.en.html. They
4 # recommend that small programs, < 300 lines, be licensed under the
5 # Apache License 2.0. This file contains or is part of one or more small
6 # programs. If a small program grows beyond 300 lines, I plan to switch
7 # its license to GPL.
8
9 # Copyright 2024 Ian Kelling
10
11 # Licensed under the Apache License, Version 2.0 (the "License");
12 # you may not use this file except in compliance with the License.
13 # You may obtain a copy of the License at
14
15 # http://www.apache.org/licenses/LICENSE-2.0
16
17 # Unless required by applicable law or agreed to in writing, software
18 # distributed under the License is distributed on an "AS IS" BASIS,
19 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 # See the License for the specific language governing permissions and
21 # limitations under the License.
22
23
24
25 set -e; . /usr/local/lib/bash-bear; set +e
26
27 remote=$1
28 fastcon=0
29 while true; do
30 start=$EPOCHSECONDS
31 if ! ssh-add -l | grep SHA256:YEhwH5u+wkqkSl/dCq8rFebi2qz7Os3RmIWPxMg13eA &>/dev/null; then
32 ssh -n $remote
33 fi
34 # -n or else it competes with the other ssh for reading stdin.
35 ssh -n $remote prof-tail | prof-notify &
36 ssh -t $remote screen -Dr -S profanity ||:
37 builtin kill %% &> /dev/null ||:
38 if (( EPOCHSECONDS > start + 600 )); then
39 fastcon=0
40 fi
41 # we try to reconnect quickly for a while (just once as I write this),
42 # then try to reconnect slowly.
43 if (( fastcon < 1 )); then
44 echo "waiting 10. any key to cancel"
45 read -rsN1 -t 10 ||:
46 fastcon=$((fastcon+1))
47 else
48 echo "waiting 120. any key to cancel"
49 # like sleep but stop on any input
50 read -rsN1 -t 120 ||:
51 fi
52 done