Skip to content

Bash Shell script Sample

jaeseok.an edited this page Apr 27, 2021 · 1 revision

Script Header

#!/bin/sh
# Copyright (C) 2021 Hyperlounge, All rights reserved. 
#
#
# @file     create_tunnel.sh
# @brief    make ssh tunnel between private service and remote ssh server
# @author   Jaeseok Ahn <jaeseok.an@hyperlounge.ai> 
#

base dir 설정

BASE_DIR="$( cd "$( dirname "$0" )" && pwd -P )"

exit help message

exit_with_usage() {
    cat << EOF

Usage$ $0 [OPTIONS] REMOTE_PORT

OPTIONS:
    -h, --help          show this help message and exit
    -s, --ssh-server    remote ssh server
EOF
    exit 1
}

Argument 파싱

###########################
######## Arguments ########
###########################
ssh_server="34.64.84.46"
private_addr=


while [ 1 ]; do
    cnt=$#
    case  $1 in
        (-h|--help)             exit_with_usage;;
        (-s|--ssh-server)       shift; ssh_server=$1; shift;;
    (--)                    shift; break;;
    esac
    [ $# -eq $cnt ] && { break; }
done
[ $# -lt 1 ] && { exit_with_usage; }
[ -z "$ssh_server" ] || [ -z "$private_addr" ] || [ -z "$private_port" ] || [ -z "$user_id" ] && { exit_with_usage; }
remote_port=$1

function 실행

gcloud compute networks create $vpc_name --project=$project
[ $? -ne 0 ] && { exit 1; }

함수

check_tunnel() {
    echo >&2 "check_tunnel"

    $(ps -ef| grep -v grep  | grep -q "ssh.* $remote_port:$private_addr:$private_port")
    exist=$?
    [ $exist -eq 0 ] && { echo >&2 "tunnel already exist"; }
    echo "$exist"
}

함수 실행 결과 체크

[ $(check_tunnel) != "0" ] && { make_tunnel; }

test

Clone this wiki locally