riot: introduce sshl

This commit is contained in:
xiongdian.me 2023-02-28 19:47:17 +08:00
parent d560368861
commit 45f4d9538c

View File

@ -43,21 +43,39 @@ get_server_meta()
# ssh
run_ssh()
{
fmt_note "--> ssh to $SERVER:$PORT"
eval ssh -p $PORT $SSH_OPTIONS $SSH_USERNAME@$SERVER
CMD="ssh -p $PORT $SSH_OPTIONS $SSH_USERNAME@$SERVER"
fmt_note "-->" $CMD
eval $CMD
}
# sshl
run_sshl()
{
if [[ -z "$1" || "$1" != *":"* ]]; then
fmt_fatal "invalid remote address: $1"
fi
while
local port=$(shuf -n 1 -i 49152-65535)
netstat -atun | grep -q "$port"
do
continue
done
CMD="ssh -p $PORT $SSH_OPTIONS -NC -L $port:$1 $SSH_USERNAME@$SERVER"
fmt_note "-->" $CMD
fmt_note " > please access localhost:$port"
eval $CMD
}
# main
print_help()
{
fmt_info "usage: $0 <service> [command] [options]"
echo "available commands: ssh (default)"
echo "available commands: ssh (default), sshl (ssh -L)"
}
router()
{
test -n "$1" || (print_help && fmt_fatal "invalid arguments")
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
if [[ -z "$1" || "$1" == "-h" || "$1" == "--help" ]]; then
print_help
exit
fi
@ -70,6 +88,9 @@ router()
ssh|"" )
run_ssh
;;
sshl )
run_sshl "$3"
;;
* )
print_help
fmt_fatal "unknown command: $2"