Merge pull request #265 from dysf888/patch-1 [no ci]

Fix fatal permission issue
This commit is contained in:
naiba 2022-12-13 13:44:48 +08:00 committed by GitHub
commit 815ee27811
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,7 +2,7 @@
#======================================================== #========================================================
# System Required: CentOS 7+ / Debian 8+ / Ubuntu 16+ / Alpine 3+ / # System Required: CentOS 7+ / Debian 8+ / Ubuntu 16+ / Alpine 3+ /
# Arch not tested # Arch has only been tested once, if there is any problem, please report with screenshots Dysf888@pm.me
# Description: Nezha Monitoring Install Script # Description: Nezha Monitoring Install Script
# Github: https://github.com/naiba/nezha # Github: https://github.com/naiba/nezha
#======================================================== #========================================================
@ -31,15 +31,15 @@ pre_check() {
## os_arch ## os_arch
if [[ $(uname -m | grep 'x86_64') != "" ]]; then if [[ $(uname -m | grep 'x86_64') != "" ]]; then
os_arch="amd64" os_arch="amd64"
elif [[ $(uname -m | grep 'i386\|i686') != "" ]]; then elif [[ $(uname -m | grep 'i386\|i686') != "" ]]; then
os_arch="386" os_arch="386"
elif [[ $(uname -m | grep 'aarch64\|armv8b\|armv8l') != "" ]]; then elif [[ $(uname -m | grep 'aarch64\|armv8b\|armv8l') != "" ]]; then
os_arch="arm64" os_arch="arm64"
elif [[ $(uname -m | grep 'arm') != "" ]]; then elif [[ $(uname -m | grep 'arm') != "" ]]; then
os_arch="arm" os_arch="arm"
elif [[ $(uname -m | grep 's390x') != "" ]]; then elif [[ $(uname -m | grep 's390x') != "" ]]; then
os_arch="s390x" os_arch="s390x"
elif [[ $(uname -m | grep 'riscv64') != "" ]]; then elif [[ $(uname -m | grep 'riscv64') != "" ]]; then
os_arch="riscv64" os_arch="riscv64"
fi fi
@ -92,16 +92,36 @@ before_show_menu() {
install_base() { install_base() {
(command -v git >/dev/null 2>&1 && command -v curl >/dev/null 2>&1 && command -v wget >/dev/null 2>&1 && command -v unzip >/dev/null 2>&1 && command -v getenforce >/dev/null 2>&1) || (command -v git >/dev/null 2>&1 && command -v curl >/dev/null 2>&1 && command -v wget >/dev/null 2>&1 && command -v unzip >/dev/null 2>&1 && command -v getenforce >/dev/null 2>&1) ||
(install_soft curl wget git unzip) (install_soft curl wget git unzip)
}
install_arch(){
echo -e "${green}Info: ${plain} Archlinux needs to add nezha-agent user to install libselinux. It will be deleted automatically after installation. It is recommended to check manually\n"
read -e -r -p "Do you need to install libselinux? [Y/n] " input
case $input in
[yY][eE][sS] | [yY])
useradd -m nezha-agent
sed -i "$ a\nezha-agent ALL=(ALL ) NOPASSWD:ALL" /etc/sudoers
sudo -iu nezha-agent yay -S libselinux --noconfirm
sed -i '/nezha-agent/d' /etc/sudoers && sleep 30s && killall -u nezha-agent&&userdel nezha-agent
echo -e "${red}Info: ${plain}user nezha-agent has been deleted, Be sure to check it manually!\n"
;;
[nN][oO] | [nN])
echo "Libselinux will not be installed"
;;
*)
echo "Libselinux will not be installed"
exit 0
;;
esac
} }
install_soft() { install_soft() {
# The official Arch library does not contain selinux components
(command -v yum >/dev/null 2>&1 && yum makecache && yum install $* selinux-policy -y) || (command -v yum >/dev/null 2>&1 && yum makecache && yum install $* selinux-policy -y) ||
(command -v apt >/dev/null 2>&1 && apt update && apt install $* selinux-utils -y) || (command -v apt >/dev/null 2>&1 && apt update && apt install $* selinux-utils -y) ||
(command -v pacman >/dev/null 2>&1 && pacman -Syu $*) || (command -v pacman >/dev/null 2>&1 && pacman -Syu $* yay --noconfirm && install_arch) ||
(command -v apt-get >/dev/null 2>&1 && apt-get update && apt-get install $* selinux-utils -y) || (command -v apt-get >/dev/null 2>&1 && apt-get update && apt-get install $* selinux-utils -y) ||
(command -v apk >/dev/null 2>&1 && apk update && apk add $* -f) (command -v apk >/dev/null 2>&1 && apk update && apk add $* -f)
} }
install_dashboard() { install_dashboard() {
@ -116,16 +136,16 @@ install_dashboard() {
echo "You may have already installed the dashboard, repeated installation will overwrite the data, please pay attention to backup." echo "You may have already installed the dashboard, repeated installation will overwrite the data, please pay attention to backup."
read -e -r -p "Exit the installation? [Y/n] " input read -e -r -p "Exit the installation? [Y/n] " input
case $input in case $input in
[yY][eE][sS] | [yY]) [yY][eE][sS] | [yY])
echo "Exit the installation." echo "Exit the installation."
exit 0 exit 0
;; ;;
[nN][oO] | [nN]) [nN][oO] | [nN])
echo "Continue." echo "Continue."
;; ;;
*) *)
echo "Exit the installation." echo "Exit the installation."
exit 0 exit 0
;; ;;
esac esac
fi fi
@ -154,13 +174,13 @@ install_dashboard() {
selinux(){ selinux(){
#Check SELinux #Check SELinux
if [ "$os_alpine" != 1 ];then if [ "$os_alpine" != 1 ];then
getenforce | grep '[Ee]nfor' getenforce | grep '[Ee]nfor'
if [ $? -eq 0 ];then if [ $? -eq 0 ];then
echo -e "SELinux runningclosing now" echo -e "SELinux runningclosing now"
setenforce 0 &>/dev/null setenforce 0 &>/dev/null
find_key="SELINUX=" find_key="SELINUX="
sed -ri "/^$find_key/c${find_key}disabled" /etc/selinux/config sed -ri "/^$find_key/c${find_key}disabled" /etc/selinux/config
fi fi
fi fi
} }
@ -199,8 +219,8 @@ install_agent() {
fi fi
unzip -qo nezha-agent_linux_${os_arch}.zip && unzip -qo nezha-agent_linux_${os_arch}.zip &&
mv nezha-agent $NZ_AGENT_PATH && mv nezha-agent $NZ_AGENT_PATH &&
rm -rf nezha-agent_linux_${os_arch}.zip README.md rm -rf nezha-agent_linux_${os_arch}.zip README.md
if [ $# -ge 3 ]; then if [ $# -ge 3 ]; then
modify_agent_config "$@" modify_agent_config "$@"
@ -217,18 +237,18 @@ modify_agent_config() {
echo -e "> Modify Agent Configuration" echo -e "> Modify Agent Configuration"
if [ "$os_alpine" != 1 ];then if [ "$os_alpine" != 1 ];then
wget -t 2 -T 10 -O $NZ_AGENT_SERVICE https://${GITHUB_RAW_URL}/script/nezha-agent.service >/dev/null 2>&1 wget -t 2 -T 10 -O $NZ_AGENT_SERVICE https://${GITHUB_RAW_URL}/script/nezha-agent.service >/dev/null 2>&1
if [[ $? != 0 ]]; then if [[ $? != 0 ]]; then
echo -e "${red}Fail to download service, please check if the network can link ${GITHUB_RAW_URL}${plain}" echo -e "${red}Fail to download service, please check if the network can link ${GITHUB_RAW_URL}${plain}"
return 0 return 0
fi fi
fi fi
if [ $# -lt 3 ]; then if [ $# -lt 3 ]; then
echo "Please add Agent in the admin panel first, record the secret" && echo "Please add Agent in the admin panel first, record the secret" &&
read -ep "Please enter a domain that resolves to the IP where the panel is located (no CDN sets): " nz_grpc_host && read -ep "Please enter a domain that resolves to the IP where the panel is located (no CDN sets): " nz_grpc_host &&
read -ep "Please enter the panel RPC port: (5555)" nz_grpc_port && read -ep "Please enter the panel RPC port: (5555)" nz_grpc_port &&
read -ep "Please enter the Agent secret: " nz_client_secret read -ep "Please enter the Agent secret: " nz_client_secret
if [[ -z "${nz_grpc_host}" || -z "${nz_client_secret}" ]]; then if [[ -z "${nz_grpc_host}" || -z "${nz_client_secret}" ]]; then
echo -e "${red}All options cannot be empty${plain}" echo -e "${red}All options cannot be empty${plain}"
before_show_menu before_show_menu
@ -244,28 +264,28 @@ modify_agent_config() {
fi fi
if [ "$os_alpine" != 1 ];then if [ "$os_alpine" != 1 ];then
sed -i "s/nz_grpc_host/${nz_grpc_host}/" ${NZ_AGENT_SERVICE} sed -i "s/nz_grpc_host/${nz_grpc_host}/" ${NZ_AGENT_SERVICE}
sed -i "s/nz_grpc_port/${nz_grpc_port}/" ${NZ_AGENT_SERVICE} sed -i "s/nz_grpc_port/${nz_grpc_port}/" ${NZ_AGENT_SERVICE}
sed -i "s/nz_client_secret/${nz_client_secret}/" ${NZ_AGENT_SERVICE} sed -i "s/nz_client_secret/${nz_client_secret}/" ${NZ_AGENT_SERVICE}
shift 3 shift 3
if [ $# -gt 0 ]; then if [ $# -gt 0 ]; then
args=" $*" args=" $*"
sed -i "/ExecStart/ s/$/${args}/" ${NZ_AGENT_SERVICE} sed -i "/ExecStart/ s/$/${args}/" ${NZ_AGENT_SERVICE}
fi fi
else else
echo "@reboot nohup ${NZ_AGENT_PATH}/nezha-agent -s ${nz_grpc_host}:${nz_grpc_port} -p ${nz_client_secret} >/dev/null 2>&1 &" >> /etc/crontabs/root echo "@reboot nohup ${NZ_AGENT_PATH}/nezha-agent -s ${nz_grpc_host}:${nz_grpc_port} -p ${nz_client_secret} >/dev/null 2>&1 &" >> /etc/crontabs/root
crond crond
fi fi
echo -e "Agent configuration ${green} modified successfully, please wait for agent self-restart to take effect${plain}" echo -e "Agent configuration ${green} modified successfully, please wait for agent self-restart to take effect${plain}"
if [ "$os_alpine" != 1 ];then if [ "$os_alpine" != 1 ];then
systemctl daemon-reload systemctl daemon-reload
systemctl enable nezha-agent systemctl enable nezha-agent
systemctl restart nezha-agent systemctl restart nezha-agent
else else
nohup ${NZ_AGENT_PATH}/nezha-agent -s ${nz_grpc_host}:${nz_grpc_port} -p ${nz_client_secret} >/dev/null 2>&1 & nohup ${NZ_AGENT_PATH}/nezha-agent -s ${nz_grpc_host}:${nz_grpc_port} -p ${nz_client_secret} >/dev/null 2>&1 &
fi fi
if [[ $# == 0 ]]; then if [[ $# == 0 ]]; then
@ -290,14 +310,14 @@ modify_dashboard_config() {
fi fi
echo "About the GitHub Oauth2 application: create it at https://github.com/settings/developers, no review required, and fill in the http(s)://domain_or_IP/oauth2/callback" && echo "About the GitHub Oauth2 application: create it at https://github.com/settings/developers, no review required, and fill in the http(s)://domain_or_IP/oauth2/callback" &&
echo "(Not recommended) About the Gitee Oauth2 application: create it at https://gitee.com/oauth/applications, no auditing required, and fill in the http(s)://domain_or_IP/oauth2/callback" && echo "(Not recommended) About the Gitee Oauth2 application: create it at https://gitee.com/oauth/applications, no auditing required, and fill in the http(s)://domain_or_IP/oauth2/callback" &&
read -ep "Please enter the OAuth2 provider (github/gitlab/jihulab/gitee, default github): " nz_oauth2_type && read -ep "Please enter the OAuth2 provider (github/gitlab/jihulab/gitee, default github): " nz_oauth2_type &&
read -ep "Please enter the Client ID of the Oauth2 application: " nz_github_oauth_client_id && read -ep "Please enter the Client ID of the Oauth2 application: " nz_github_oauth_client_id &&
read -ep "Please enter the Client Secret of the Oauth2 application: " nz_github_oauth_client_secret && read -ep "Please enter the Client Secret of the Oauth2 application: " nz_github_oauth_client_secret &&
read -ep "Please enter your GitHub/Gitee login name as the administrator, separated by commas: " nz_admin_logins && read -ep "Please enter your GitHub/Gitee login name as the administrator, separated by commas: " nz_admin_logins &&
read -ep "Please enter the site title: " nz_site_title && read -ep "Please enter the site title: " nz_site_title &&
read -ep "Please enter the site access port: (default 8008)" nz_site_port && read -ep "Please enter the site access port: (default 8008)" nz_site_port &&
read -ep "Please enter the RPC port to be used for Agent access: (default 5555)" nz_grpc_port read -ep "Please enter the RPC port to be used for Agent access: (default 5555)" nz_grpc_port
if [[ -z "${nz_admin_logins}" || -z "${nz_github_oauth_client_id}" || -z "${nz_github_oauth_client_secret}" || -z "${nz_site_title}" ]]; then if [[ -z "${nz_admin_logins}" || -z "${nz_github_oauth_client_id}" || -z "${nz_github_oauth_client_secret}" || -z "${nz_site_title}" ]]; then
echo -e "${red}All options cannot be empty${plain}" echo -e "${red}All options cannot be empty${plain}"
@ -457,13 +477,13 @@ uninstall_agent() {
echo -e "> Uninstall Agent" echo -e "> Uninstall Agent"
if [ "$os_alpine" != 1 ];then if [ "$os_alpine" != 1 ];then
systemctl disable nezha-agent.service systemctl disable nezha-agent.service
systemctl stop nezha-agent.service systemctl stop nezha-agent.service
rm -rf $NZ_AGENT_SERVICE rm -rf $NZ_AGENT_SERVICE
systemctl daemon-reload systemctl daemon-reload
else else
sed -i "/nezha-agent/d" /etc/crontabs/root sed -i "/nezha-agent/d" /etc/crontabs/root
pkill nezha pkill nezha
fi fi
rm -rf $NZ_AGENT_PATH rm -rf $NZ_AGENT_PATH
@ -536,50 +556,50 @@ show_menu() {
echo && read -ep "Please enter [0-13]: " num echo && read -ep "Please enter [0-13]: " num
case "${num}" in case "${num}" in
0) 0)
exit 0 exit 0
;; ;;
1) 1)
install_dashboard install_dashboard
;; ;;
2) 2)
modify_dashboard_config modify_dashboard_config
;; ;;
3) 3)
start_dashboard start_dashboard
;; ;;
4) 4)
stop_dashboard stop_dashboard
;; ;;
5) 5)
restart_and_update restart_and_update
;; ;;
6) 6)
show_dashboard_log show_dashboard_log
;; ;;
7) 7)
uninstall_dashboard uninstall_dashboard
;; ;;
8) 8)
install_agent install_agent
;; ;;
9) 9)
modify_agent_config modify_agent_config
;; ;;
10) 10)
show_agent_log show_agent_log
;; ;;
11) 11)
uninstall_agent uninstall_agent
;; ;;
12) 12)
restart_agent restart_agent
;; ;;
13) 13)
update_script update_script
;; ;;
*) *)
echo -e "${red}Please enter the correct number [0-13]${plain}" echo -e "${red}Please enter the correct number [0-13]${plain}"
;; ;;
esac esac
} }
@ -588,51 +608,51 @@ pre_check
if [[ $# > 0 ]]; then if [[ $# > 0 ]]; then
case $1 in case $1 in
"install_dashboard") "install_dashboard")
install_dashboard 0 install_dashboard 0
;; ;;
"modify_dashboard_config") "modify_dashboard_config")
modify_dashboard_config 0 modify_dashboard_config 0
;; ;;
"start_dashboard") "start_dashboard")
start_dashboard 0 start_dashboard 0
;; ;;
"stop_dashboard") "stop_dashboard")
stop_dashboard 0 stop_dashboard 0
;; ;;
"restart_and_update") "restart_and_update")
restart_and_update 0 restart_and_update 0
;; ;;
"show_dashboard_log") "show_dashboard_log")
show_dashboard_log 0 show_dashboard_log 0
;; ;;
"uninstall_dashboard") "uninstall_dashboard")
uninstall_dashboard 0 uninstall_dashboard 0
;; ;;
"install_agent") "install_agent")
shift shift
if [ $# -ge 3 ]; then if [ $# -ge 3 ]; then
install_agent "$@" install_agent "$@"
else else
install_agent 0 install_agent 0
fi fi
;; ;;
"modify_agent_config") "modify_agent_config")
modify_agent_config 0 modify_agent_config 0
;; ;;
"show_agent_log") "show_agent_log")
show_agent_log 0 show_agent_log 0
;; ;;
"uninstall_agent") "uninstall_agent")
uninstall_agent 0 uninstall_agent 0
;; ;;
"restart_agent") "restart_agent")
restart_agent 0 restart_agent 0
;; ;;
"update_script") "update_script")
update_script 0 update_script 0
;; ;;
*) show_usage ;; *) show_usage ;;
esac esac
else else
show_menu show_menu