.bashrc: Add shorthands for ssh-ing into tailscale nodes

This commit is contained in:
Peter Cai 2022-09-13 17:46:38 -04:00
parent 190c3559e4
commit 25182187ae
1 changed files with 45 additions and 0 deletions

View File

@ -20,10 +20,12 @@ alias moshtmp="mosh --ssh=\"ssh -o 'UserKnownHostsFile /dev/null' -o 'StrictHost
# SSH with automatic "screen"
function sshscr() {
[ -z "$1" ] && return
ssh -t $@ screen -RR -d
}
function moshscr() {
[ -z "$1" ] && return
mosh $@ -- screen -RR -d
}
@ -41,5 +43,48 @@ function sshunlock() {
set +o pipefail
}
# Show a menu of all known Tailscale nodes for the user to select from
function tsselect() {
local items=()
local hostnames=()
while read -r line; do
local name=$(echo "$line" | awk '{ print $2 }')
local ip=$(echo "$line" | awk '{ print $1 }')
items+=("$name ($ip)")
hostnames+=("$name")
done <<< $(tailscale status --self=false | sort -k 2)
_COLUMNS=$COLUMNS
# Force options to display in one column
COLUMNS=80
select item in "${items[@]}" Cancel; do
if [ $REPLY -eq ${#items[@]} ]; then
echo ""
fi
echo ${hostnames[$((REPLY - 1))]}
break;
done
COLUMNS=$_COLUMNS
}
# SSH shorthands, same as before but for tailscale nodes
function moshscrts() {
moshscr $(tsselect)
}
function sshscrts() {
sshscr $(tsselect)
}
function _ssh() {
[ -z "$1" ] && return
ssh $@
}
function sshts() {
_ssh $(tsselect)
}
# Add local to path
export PATH="$PATH:~/.local/bin"