1 Star 0 Fork 1

网络工作室/frp一键安装包

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
1install-frps.sh 26.66 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
#! /bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#===============================================================================================
# System Required: CentOS Debian or Ubuntu (32bit/64bit)
# Description: A tool to auto-compile & install frps on Linux
# Author: Clang
# Intro: http://blog.uug5.com
#===============================================================================================
program_name="frps"
version="1.4"
str_program_dir="/usr/local/${program_name}"
program_download_url="https://code.aliyun.com/clangcn/frp/raw/master"
program_version="0.9.3"
program_init="/etc/init.d/${program_name}"
program_config_file="frps.ini"
program_init_download_url=http://git.oschina.net/kelei123/frplei/raw/master/frps.init
str_install_shell=https://git.oschina.net/kelei123/frplei/raw/master/install-frps.sh
shell_update(){
fun_clangcn "clear"
echo "Check updates for shell..."
remote_shell_version=`wget --no-check-certificate -qO- ${str_install_shell} | sed -n '/'^version'/p' | cut -d\" -f2`
if [ ! -z ${remote_shell_version} ]; then
if [[ "${version}" != "${remote_shell_version}" ]];then
echo -e "${COLOR_GREEN}Found a new version,update now!!!${COLOR_END}"
echo
echo -n "Update shell ..."
if ! wget --no-check-certificate -qO $0 ${str_install_shell}; then
echo -e " [${COLOR_RED}failed${COLOR_END}]"
echo
exit 1
else
echo -e " [${COLOR_GREEN}OK${COLOR_END}]"
echo
echo -e "${COLOR_GREEN}Please Re-run${COLOR_END} ${COLOR_PINK}$0 ${clang_action}${COLOR_END}"
echo
exit 1
fi
exit 1
fi
fi
}
fun_clangcn(){
local clear_flag=""
clear_flag=$1
if [[ ${clear_flag} == "clear" ]]; then
clear
fi
echo ""
echo "+---------------------------------------------------------+"
echo "| frps for Linux Server, Written by Clang |"
echo "+---------------------------------------------------------+"
echo "| A tool to auto-compile & install frps on Linux |"
echo "+---------------------------------------------------------+"
echo "| Intro: http://blog.uug5.com |"
echo "+---------------------------------------------------------+"
echo ""
}
fun_set_text_color(){
COLOR_RED='\E[1;31m'
COLOR_GREEN='\E[1;32m'
COLOR_YELOW='\E[1;33m'
COLOR_BLUE='\E[1;34m'
COLOR_PINK='\E[1;35m'
COLOR_PINKBACK_WHITEFONT='\033[45;37m'
COLOR_GREEN_LIGHTNING='\033[32m \033[05m'
COLOR_END='\E[0m'
}
# Check if user is root
rootness(){
if [[ $EUID -ne 0 ]]; then
fun_clangcn
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
}
# Check OS
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
getversion(){
if [[ -s /etc/redhat-release ]];then
grep -oE "[0-9.]+" /etc/redhat-release
else
grep -oE "[0-9.]+" /etc/issue
fi
}
# CentOS version
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
check_os_bit(){
ARCHS=""
if [[ `getconf WORD_BIT` = '32' && `getconf LONG_BIT` = '64' ]] ; then
Is_64bit='y'
ARCHS="amd64"
else
Is_64bit='n'
ARCHS="386"
fi
}
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
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
}
pre_install_packs(){
local wget_flag=''
local killall_flag=''
local netstat_flag=''
wget --version > /dev/null 2>&1
wget_flag=$?
killall -V >/dev/null 2>&1
killall_flag=$?
netstat --version >/dev/null 2>&1
netstat_flag=$?
if [[ ${wget_flag} -gt 1 ]] || [[ ${killall_flag} -gt 1 ]] || [[ ${netstat_flag} -gt 6 ]];then
echo -e "${COLOR_GREEN} Install support packs...${COLOR_END}"
if [ "${OS}" == 'CentOS' ]; then
yum install -y wget psmisc net-tools
else
apt-get -y update && apt-get -y install wget psmisc net-tools
fi
fi
}
# Random password
fun_randstr(){
strNum=$1
[ -z "${strNum}" ] && strNum="16"
strRandomPass=""
strRandomPass=`tr -cd '[:alnum:]' < /dev/urandom | fold -w ${strNum} | head -n1`
echo ${strRandomPass}
}
fun_getVer(){
echo -e "Loading network version for ${program_name}, please wait..."
program_latest_filename="frp_${program_version}_linux_${ARCHS}.tar.gz"
program_latest_file_url="${program_download_url}/${program_version}/${program_latest_filename}"
if [ -z "${program_latest_filename}" ]; then
echo -e "${COLOR_RED}Load network version failed!!!${COLOR_END}"
else
echo -e "${program_name} Latest release file ${COLOR_GREEN}${program_latest_filename}${COLOR_END}"
fi
}
fun_download_file(){
# download
if [ ! -s ${str_program_dir}/${program_name} ]; then
rm -fr ${program_latest_filename} frp_${program_version}_linux_${ARCHS}
if ! wget --no-check-certificate -q ${program_latest_file_url} -O ${program_latest_filename}; then
echo -e " ${COLOR_RED}failed${COLOR_END}"
exit 1
fi
tar xzf ${program_latest_filename}
mv frp_${program_version}_linux_${ARCHS}/frps ${str_program_dir}/${program_name}
rm -fr ${program_latest_filename} frp_${program_version}_linux_${ARCHS}
fi
chown root:root -R ${str_program_dir}
if [ -s ${str_program_dir}/${program_name} ]; then
[ ! -x ${str_program_dir}/${program_name} ] && chmod 755 ${str_program_dir}/${program_name}
else
echo -e " ${COLOR_RED}failed${COLOR_END}"
exit 1
fi
}
# Check port
fun_check_port(){
port_flag=""
strCheckPort=""
input_port=""
port_flag="$1"
strCheckPort="$2"
if [ ${strCheckPort} -ge 1 ] && [ ${strCheckPort} -le 65535 ]; then
checkServerPort=`netstat -ntulp | grep "\b:${strCheckPort}\b"`
if [ -n "${checkServerPort}" ]; then
echo ""
echo -e "${COLOR_RED}Error:${COLOR_END} Port ${COLOR_GREEN}${strCheckPort}${COLOR_END} is ${COLOR_PINK}used${COLOR_END},view relevant port:"
netstat -ntulp | grep "\b:${strCheckPort}\b"
fun_input_${port_flag}_port
else
input_port="${strCheckPort}"
fi
else
echo "Input error! Please input correct numbers."
fun_input_${port_flag}_port
fi
}
fun_check_number(){
num_flag=""
strMaxNum=""
strCheckNum=""
input_number=""
num_flag="$1"
strMaxNum="$2"
strCheckNum="$3"
if [ ${strCheckNum} -ge 1 ] && [ ${strCheckNum} -le ${strMaxNum} ]; then
input_number="${strCheckNum}"
else
echo "Input error! Please input correct numbers."
fun_input_${num_flag}
fi
}
# input port
fun_input_bind_port(){
def_server_port="5443"
echo ""
echo -n -e "Please input ${program_name} ${COLOR_GREEN}bind_port${COLOR_END} [1-65535]"
read -p "(Default Server Port: ${def_server_port}):" serverport
[ -z "${serverport}" ] && serverport="${def_server_port}"
fun_check_port "bind" "${serverport}"
}
fun_input_dashboard_port(){
def_dashboard_port="6443"
echo ""
echo -n -e "Please input ${program_name} ${COLOR_GREEN}dashboard_port${COLOR_END} [1-65535]"
read -p "(Default dashboard_port: ${def_dashboard_port}):" input_dashboard_port
[ -z "${input_dashboard_port}" ] && input_dashboard_port="${def_dashboard_port}"
fun_check_port "dashboard" "${input_dashboard_port}"
}
fun_input_vhost_http_port(){
def_vhost_http_port="80"
echo ""
echo -n -e "Please input ${program_name} ${COLOR_GREEN}vhost_http_port${COLOR_END} [1-65535]"
read -p "(Default vhost_http_port: ${def_vhost_http_port}):" input_vhost_http_port
[ -z "${input_vhost_http_port}" ] && input_vhost_http_port="${def_vhost_http_port}"
fun_check_port "vhost_http" "${input_vhost_http_port}"
}
fun_input_vhost_https_port(){
def_vhost_https_port="443"
echo ""
echo -n -e "Please input ${program_name} ${COLOR_GREEN}vhost_https_port${COLOR_END} [1-65535]"
read -p "(Default vhost_https_port: ${def_vhost_https_port}):" input_vhost_https_port
[ -z "${input_vhost_https_port}" ] && input_vhost_https_port="${def_vhost_https_port}"
fun_check_port "vhost_https" "${input_vhost_https_port}"
}
fun_input_log_max_days(){
def_max_days="30"
def_log_max_days="3"
echo ""
echo -e "Please input ${program_name} ${COLOR_GREEN}log_max_days${COLOR_END} [1-${def_max_days}]"
read -p "(Default log_max_days: ${def_log_max_days} day):" input_log_max_days
[ -z "${input_log_max_days}" ] && input_log_max_days="${def_log_max_days}"
fun_check_number "log_max_days" "${def_max_days}" "${input_log_max_days}"
}
fun_input_max_pool_count(){
def_max_pool="200"
def_max_pool_count="50"
echo ""
echo -e "Please input ${program_name} ${COLOR_GREEN}max_pool_count${COLOR_END} [1-${def_max_pool}]"
read -p "(Default max_pool_count: ${def_max_pool_count}):" input_max_pool_count
[ -z "${input_max_pool_count}" ] && input_max_pool_count="${def_max_pool_count}"
fun_check_number "max_pool_count" "${def_max_pool}" "${input_max_pool_count}"
}
pre_install_clang(){
fun_clangcn
echo -e "Check your server setting, please wait..."
disable_selinux
if [ -s ${str_program_dir}/${program_name} ] && [ -s ${program_init} ]; then
echo "${program_name} is installed!"
else
clear
fun_clangcn
fun_getVer
echo -e "Loading You Server IP, please wait..."
defIP=$(wget -qO- ip.clang.cn | sed -r 's/\r//')
echo -e "You Server IP:${COLOR_GREEN}${defIP}${COLOR_END}"
echo -e "${COLOR_YELOW}Please input your server setting:${COLOR_END}"
fun_input_bind_port
[ -n "${input_port}" ] && set_bind_port="${input_port}"
echo "${program_name} bind_port: ${set_bind_port}"
echo ""
fun_input_vhost_http_port
[ -n "${input_port}" ] && set_vhost_http_port="${input_port}"
echo "${program_name} vhost_http_port: ${set_vhost_http_port}"
echo ""
fun_input_vhost_https_port
[ -n "${input_port}" ] && set_vhost_https_port="${input_port}"
echo "${program_name} vhost_https_port: ${set_vhost_https_port}"
echo ""
fun_input_dashboard_port
[ -n "${input_port}" ] && set_dashboard_port="${input_port}"
echo "${program_name} dashboard_port: ${set_dashboard_port}"
echo ""
def_dashboard_user="admin"
read -p "Please input dashboard_user (Default: ${def_dashboard_user}):" set_dashboard_user
[ -z "${set_dashboard_user}" ] && set_dashboard_user="${def_dashboard_user}"
echo "${program_name} dashboard_user: ${set_dashboard_user}"
echo ""
def_dashboard_pwd=`fun_randstr 8`
read -p "Please input dashboard_pwd (Default: ${def_dashboard_pwd}):" set_dashboard_pwd
[ -z "${set_dashboard_pwd}" ] && set_dashboard_pwd="${def_dashboard_pwd}"
echo "${program_name} dashboard_pwd: ${set_dashboard_pwd}"
echo ""
default_privilege_token=`fun_randstr 16`
read -p "Please input privilege_token (Default: ${default_privilege_token}):" set_privilege_token
[ -z "${set_privilege_token}" ] && set_privilege_token="${default_privilege_token}"
echo "${program_name} privilege_token: ${set_privilege_token}"
echo ""
fun_input_max_pool_count
[ -n "${input_number}" ] && set_max_pool_count="${input_number}"
echo "${program_name} max_pool_count: ${set_max_pool_count}"
echo ""
echo "##### Please select log_level #####"
echo "1: info"
echo "2: warn"
echo "3: error"
echo "4: debug"
echo "#####################################################"
read -p "Enter your choice (1, 2, 3, 4 or exit. default [1]): " str_log_level
case "${str_log_level}" in
1|[Ii][Nn][Ff][Oo])
str_log_level="info"
;;
2|[Ww][Aa][Rr][Nn])
str_log_level="warn"
;;
3|[Ee][Rr][Rr][Oo][Rr])
str_log_level="error"
;;
4|[Dd][Ee][Bb][Uu][Gg])
str_log_level="debug"
;;
[eE][xX][iI][tT])
exit 1
;;
*)
str_log_level="info"
;;
esac
echo "log_level: ${str_log_level}"
echo ""
fun_input_log_max_days
[ -n "${input_number}" ] && set_log_max_days="${input_number}"
echo "${program_name} log_max_days: ${set_log_max_days}"
echo ""
echo "##### Please select log_file #####"
echo "1: enable"
echo "2: disable"
echo "#####################################################"
read -p "Enter your choice (1, 2 or exit. default [1]): " str_log_file
case "${str_log_file}" in
1|[yY]|[yY][eE][sS]|[oO][nN]|[tT][rR][uU][eE]|[eE][nN][aA][bB][lL][eE])
str_log_file="./frps.log"
str_log_file_flag="enable"
;;
0|2|[nN]|[nN][oO]|[oO][fF][fF]|[fF][aA][lL][sS][eE]|[dD][iI][sS][aA][bB][lL][eE])
str_log_file="/dev/null"
str_log_file_flag="disable"
;;
[eE][xX][iI][tT])
exit 1
;;
*)
str_log_file="./frps.log"
str_log_file_flag="enable"
;;
esac
echo "log_file: ${str_log_file_flag}"
echo ""
echo "============== Check your input =============="
echo -e "You Server IP : ${COLOR_GREEN}${defIP}${COLOR_END}"
echo -e "Bind port : ${COLOR_GREEN}${set_bind_port}${COLOR_END}"
echo -e "vhost http port : ${COLOR_GREEN}${set_vhost_http_port}${COLOR_END}"
echo -e "vhost https port : ${COLOR_GREEN}${set_vhost_https_port}${COLOR_END}"
echo -e "Dashboard port : ${COLOR_GREEN}${set_dashboard_port}${COLOR_END}"
echo -e "Dashboard user : ${COLOR_GREEN}${set_dashboard_user}${COLOR_END}"
echo -e "Dashboard password : ${COLOR_GREEN}${set_dashboard_pwd}${COLOR_END}"
echo -e "Privilege token : ${COLOR_GREEN}${set_privilege_token}${COLOR_END}"
echo -e "Max Pool count : ${COLOR_GREEN}${set_max_pool_count}${COLOR_END}"
echo -e "Log level : ${COLOR_GREEN}${str_log_level}${COLOR_END}"
echo -e "Log max days : ${COLOR_GREEN}${set_log_max_days}${COLOR_END}"
echo -e "Log file : ${COLOR_GREEN}${str_log_file_flag}${COLOR_END}"
echo "=============================================="
echo ""
echo "Press any key to start...or Press Ctrl+c to cancel"
char=`get_char`
install_program_server_clang
fi
}
# ====== install server ======
install_program_server_clang(){
[ ! -d ${str_program_dir} ] && mkdir -p ${str_program_dir}
cd ${str_program_dir}
echo "${program_name} install path:$PWD"
echo -n "config file for ${program_name} ..."
# Config file
cat > ${str_program_dir}/${program_config_file}<<-EOF
# [common] is integral section
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
bind_addr = 0.0.0.0
bind_port = ${set_bind_port}
# if you want to configure or reload frps by dashboard, dashboard_port must be set
dashboard_port = ${set_dashboard_port}
# dashboard assets directory(only for debug mode)
dashboard_user = ${set_dashboard_user}
dashboard_pwd = ${set_dashboard_pwd}
# assets_dir = ./static
vhost_http_port = ${set_vhost_http_port}
vhost_https_port = ${set_vhost_https_port}
# console or real logFile path like ./frps.log
log_file = ${str_log_file}
# debug, info, warn, error
log_level = ${str_log_level}
log_max_days = ${set_log_max_days}
# if you enable privilege mode, frpc can create a proxy without pre-configure in frps when privilege_token is correct
privilege_mode = true
privilege_token = ${set_privilege_token}
# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
#privilege_allow_ports = 1-65535
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = ${set_max_pool_count}
EOF
echo " done"
echo -n "download ${program_name} ..."
rm -f ${str_program_dir}/${program_name} ${program_init}
fun_download_file
echo " done"
echo -n "download ${program_init}..."
if [ ! -s ${program_init} ]; then
if ! wget --no-check-certificate -q ${program_init_download_url} -O ${program_init}; then
echo -e " ${COLOR_RED}failed${COLOR_END}"
exit 1
fi
fi
[ ! -x ${program_init} ] && chmod +x ${program_init}
echo " done"
echo -n "setting ${program_name} boot..."
[ ! -x ${program_init} ] && chmod +x ${program_init}
if [ "${OS}" == 'CentOS' ]; then
chmod +x ${program_init}
chkconfig --add ${program_name}
else
chmod +x ${program_init}
update-rc.d -f ${program_name} defaults
fi
echo " done"
[ -s ${program_init} ] && ln -s ${program_init} /usr/bin/${program_name}
${program_init} start
fun_clangcn
#install successfully
echo ""
echo "Congratulations, ${program_name} install completed!"
echo "=============================================="
echo -e "You Server IP : ${COLOR_GREEN}${defIP}${COLOR_END}"
echo -e "Bind port : ${COLOR_GREEN}${set_bind_port}${COLOR_END}"
echo -e "vhost http port : ${COLOR_GREEN}${set_vhost_http_port}${COLOR_END}"
echo -e "vhost https port : ${COLOR_GREEN}${set_vhost_https_port}${COLOR_END}"
echo -e "Dashboard port : ${COLOR_GREEN}${set_dashboard_port}${COLOR_END}"
echo -e "Privilege token : ${COLOR_GREEN}${set_privilege_token}${COLOR_END}"
echo -e "Max Pool count : ${COLOR_GREEN}${set_max_pool_count}${COLOR_END}"
echo -e "Log level : ${COLOR_GREEN}${str_log_level}${COLOR_END}"
echo -e "Log max days : ${COLOR_GREEN}${set_log_max_days}${COLOR_END}"
echo -e "Log file : ${COLOR_GREEN}${str_log_file_flag}${COLOR_END}"
echo "=============================================="
echo -e "${program_name} Dashboard : ${COLOR_GREEN}http://${defIP}:${set_dashboard_port}/${COLOR_END}"
echo -e "Dashboard user : ${COLOR_GREEN}${set_dashboard_user}${COLOR_END}"
echo -e "Dashboard password : ${COLOR_GREEN}${set_dashboard_pwd}${COLOR_END}"
echo "=============================================="
echo ""
echo -e "${program_name} status manage : ${COLOR_PINKBACK_WHITEFONT}${program_name}${COLOR_END} {${COLOR_GREEN}start|stop|restart|status|config|version${COLOR_END}}"
echo -e "Example:"
echo -e " start: ${COLOR_PINK}${program_name}${COLOR_END} ${COLOR_GREEN}start${COLOR_END}"
echo -e " stop: ${COLOR_PINK}${program_name}${COLOR_END} ${COLOR_GREEN}stop${COLOR_END}"
echo -e "restart: ${COLOR_PINK}${program_name}${COLOR_END} ${COLOR_GREEN}restart${COLOR_END}"
exit 0
}
############################### configure ##################################
configure_program_server_clang(){
if [ -s ${str_program_dir}/${program_config_file} ]; then
vi ${str_program_dir}/${program_config_file}
else
echo "${program_name} configuration file not found!"
exit 1
fi
}
############################### uninstall ##################################
uninstall_program_server_clang(){
fun_clangcn
if [ -s ${program_init} ] || [ -s ${str_program_dir}/${program_name} ] ; then
echo "============== Uninstall ${program_name} =============="
str_uninstall="n"
echo -n -e "${COLOR_YELOW}You want to uninstall?${COLOR_END}"
read -p "[y/N]:" str_uninstall
case "${str_uninstall}" in
[yY]|[yY][eE][sS])
echo ""
echo "You select [Yes], press any key to continue."
str_uninstall="y"
char=`get_char`
;;
*)
echo ""
str_uninstall="n"
esac
if [ "${str_uninstall}" == 'n' ]; then
echo "You select [No],shell exit!"
else
checkos
${program_init} stop
if [ "${OS}" == 'CentOS' ]; then
chkconfig --del ${program_name}
else
update-rc.d -f ${program_name} remove
fi
rm -f ${program_init} /var/run/${program_name}.pid /usr/bin/${program_name}
rm -fr ${str_program_dir}
echo "${program_name} uninstall success!"
fi
else
echo "${program_name} Not install!"
fi
exit 0
}
############################### update ##################################
update_config_clang(){
if [ ! -r "${str_program_dir}/${program_config_file}" ]; then
echo "config file ${str_program_dir}/${program_config_file} not found."
else
search_dashboard_user=`grep "dashboard_user" ${str_program_dir}/${program_config_file}`
search_dashboard_pwd=`grep "dashboard_pwd" ${str_program_dir}/${program_config_file}`
if [ -z "${search_dashboard_user}" ] && [ -z "${search_dashboard_pwd}" ];then
echo -e "${COLOR_GREEN}Configuration files need to be updated, now setting:${COLOR_END}"
echo ""
def_dashboard_user_update="admin"
read -p "Please input dashboard_user (Default: ${def_dashboard_user_update}):" set_dashboard_user_update
[ -z "${set_dashboard_user_update}" ] && set_dashboard_user_update="${def_dashboard_user_update}"
echo "${program_name} dashboard_user: ${set_dashboard_user_update}"
echo ""
def_dashboard_pwd_update=`fun_randstr 8`
read -p "Please input dashboard_pwd (Default: ${def_dashboard_pwd_update}):" set_dashboard_pwd_update
[ -z "${set_dashboard_pwd_update}" ] && set_dashboard_pwd_update="${def_dashboard_pwd_update}"
echo "${program_name} dashboard_pwd: ${set_dashboard_pwd_update}"
echo ""
sed -i "/dashboard_port =.*/a\dashboard_user = ${set_dashboard_user_update}\ndashboard_pwd = ${set_dashboard_pwd_update}\n" ${str_program_dir}/${program_config_file}
verify_dashboard_user=`grep "dashboard_user" ${str_program_dir}/${program_config_file}`
verify_dashboard_pwd=`grep "dashboard_pwd" ${str_program_dir}/${program_config_file}`
if [ ! -z "${verify_dashboard_user}" ] && [ ! -z "${verify_dashboard_pwd}" ];then
echo -e "${COLOR_GREEN}update configuration file successfully!!!${COLOR_END}"
else
echo -e "${COLOR_RED}update configuration file error!!!${COLOR_END}"
fi
fi
fi
}
update_program_server_clang(){
fun_clangcn "clear"
if [ -s ${program_init} ] || [ -s ${str_program_dir}/${program_name} ] ; then
echo "============== Update ${program_name} =============="
update_config_clang
checkos
check_centosversion
check_os_bit
remote_init_version=`wget --no-check-certificate -qO- ${program_init_download_url} | sed -n '/'^version'/p' | cut -d\" -f2`
local_init_version=`sed -n '/'^version'/p' ${program_init} | cut -d\" -f2`
install_shell=${strPath}
if [ ! -z ${remote_init_version} ];then
if [[ "${local_init_version}" != "${remote_init_version}" ]];then
echo "========== Update ${program_name} ${program_init} =========="
if ! wget --no-check-certificate ${program_init_download_url} -O ${program_init}; then
echo "Failed to download ${program_name}.init file!"
exit 1
else
echo -e "${COLOR_GREEN}${program_init} Update successfully !!!${COLOR_END}"
fi
fi
fi
[ ! -d ${str_program_dir} ] && mkdir -p ${str_program_dir}
echo -e "Loading network version for ${program_name}, please wait..."
fun_getVer >/dev/null 2>&1
local_program_version=`${str_program_dir}/${program_name} --version`
echo -e "${COLOR_GREEN}${program_name} local version ${local_program_version}${COLOR_END}"
echo -e "${COLOR_GREEN}${program_name} remote version ${program_version:1}${COLOR_END}"
if [[ "${local_program_version}" != "${program_version:1}" ]];then
echo -e "${COLOR_GREEN}Found a new version,update now!!!${COLOR_END}"
${program_init} stop
sleep 1
rm -f /usr/bin/${program_name} ${str_program_dir}/${program_name}
fun_download_file
if [ "${OS}" == 'CentOS' ]; then
chmod +x ${program_init}
chkconfig --add ${program_name}
else
chmod +x ${program_init}
update-rc.d -f ${program_name} defaults
fi
[ -s ${program_init} ] && ln -s ${program_init} /usr/bin/${program_name}
[ ! -x ${program_init} ] && chmod 755 ${program_init}
${program_init} start
echo "${program_name} version `${str_program_dir}/${program_name} --version`"
echo "${program_name} update success!"
else
echo -e "no need to update !!!${COLOR_END}"
fi
else
echo "${program_name} Not install!"
fi
exit 0
}
clear
strPath=`pwd`
rootness
fun_set_text_color
checkos
check_centosversion
check_os_bit
pre_install_packs
shell_update
# Initialization
action=$1
[ -z $1 ]
case "$action" in
install)
pre_install_clang 2>&1 | tee /root/${program_name}-install.log
;;
config)
configure_program_server_clang
;;
uninstall)
uninstall_program_server_clang 2>&1 | tee /root/${program_name}-uninstall.log
;;
update)
update_program_server_clang 2>&1 | tee /root/${program_name}-update.log
;;
*)
fun_clangcn
echo "Arguments error! [${action} ]"
echo "Usage: `basename $0` {install|uninstall|update|config}"
RET_VAL=1
;;
esac
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jf12458/frplei.git
git@gitee.com:jf12458/frplei.git
jf12458
frplei
frp一键安装包
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385