#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH shell_run_start=`date "+%Y-%m-%d %H:%M:%S"` #shell run start time version="V4.0" # Check if user is root function rootness(){ if [[ $EUID -ne 0 ]]; then echo "Error:This script must be run as root!" 1>&2 exit 1 fi } get_char() { SAVEDSTTY=`stty -g` stty -echo stty cbreak dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY } function fun_clangcn.com(){ echo "" echo "#######################################################################" echo "# On key install Ngrok ${version} for Debian/Ubuntu/CentOS Linux Server" echo "# Intro: http://clang.cn/blog/" echo "#" echo "# Author: Clang " echo "# version:${version}" echo "#######################################################################" echo "" } # Check OS function checkos(){ if grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then OS=CentOS elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then OS=Debian elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then OS=Ubuntu else echo "Not support OS, Please reinstall OS and retry!" exit 1 fi } # Get version function getversion(){ if [[ -s /etc/redhat-release ]];then grep -oE "[0-9.]+" /etc/redhat-release else grep -oE "[0-9.]+" /etc/issue fi } # CentOS version function centosversion(){ local code=$1 local version="`getversion`" local main_ver=${version%%.*} if [ $main_ver == $code ];then return 0 else return 1 fi } # Check OS bit function check_os_bit(){ if [[ `getconf WORD_BIT` = '32' && `getconf LONG_BIT` = '64' ]] ; then Is_64bit='y' else Is_64bit='n' fi } function check_centosversion(){ if centosversion 5; then echo "Not support CentOS 5.x, please change to CentOS 6,7 or Debian or Ubuntu and try again." exit 1 fi } # Disable selinux function disable_selinux(){ if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 fi } function fun_set_ngrok_domain(){ # Set ngrok domain NGROK_DOMAIN="" read -p "Please input domain for Ngrok(e.g.:ngrok.clang.cn):" NGROK_DOMAIN check_input } function fun_set_ngrok_pass(){ # Set ngrok pass ngrok_pass="" read -p "Please input password for Ngrok:" ngrok_pass } function check_input(){ # check ngrok domain if [ "$NGROK_DOMAIN" = "" ]; then echo -e "Your input is empty,please input again..." fun_set_ngrok_domain else echo -e "Your domain: \033[41;37m "${NGROK_DOMAIN}" \033[0m." fun_set_ngrok_pass fi # check ngrok pass if [ "$ngrok_pass" = "" ]; then echo -e "Your input is empty,please input again..." fun_set_ngrok_pass else echo -e "Your ngrok pass: \033[41;37m "${ngrok_pass}" \033[0m." echo -e "\033[32m \033[05mPress any key to start...or Press Ctrl+c to cancel\033[0m" char=`get_char` pre_install fi } function config_runshell_ngrok(){ cat > /root/.ngrok_config.sh <&1 | tee /root/ngrok_install.log exit 0