代码拉取完成,页面将自动刷新
#!/bin/bash
# Set environment
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Prepare output
echo -e "|\n| serverwatch Installer\n| =======================\n|"
# Root required
if [ $(id -u) != "0" ];
then
echo -e "| Error: You need to be root to install the agent\n|"
echo -e "| The agent itself will NOT be running as root but instead under its own non-privileged user\n|"
exit 1
fi
# Parameters required
if [ $# -lt 1 ]
then
echo -e "| Usage: bash $0 'token'\n|"
exit 1
fi
# Check if crontab is installed
if [ ! -n "$(command -v crontab)" ]
then
# Confirm crontab installation
echo "|" && read -p "| Crontab is required and could not be found. Do you want to install it? [Y/n] " input_variable_install
# Attempt to install crontab
if [ -z $input_variable_install ] || [ $input_variable_install == "Y" ] || [ $input_variable_install == "y" ]
then
if [ -n "$(command -v apt-get)" ]
then
echo -e "|\n| Notice: Installing required package 'cron' via 'apt-get'"
apt-get -y update
apt-get -y install cron
elif [ -n "$(command -v yum)" ]
then
echo -e "|\n| Notice: Installing required package 'cronie' via 'yum'"
yum -y install cronie
if [ ! -n "$(command -v crontab)" ]
then
echo -e "|\n| Notice: Installing required package 'vixie-cron' via 'yum'"
yum -y install vixie-cron
fi
elif [ -n "$(command -v pacman)" ]
then
echo -e "|\n| Notice: Installing required package 'cronie' via 'pacman'"
pacman -S --noconfirm cronie
fi
fi
if [ ! -n "$(command -v crontab)" ]
then
# Show error
echo -e "|\n| Error: Crontab is required and could not be installed\n|"
exit 1
fi
fi
# Check if cron is running
if [ -z "$(ps -Al | grep cron | grep -v grep)" ]
then
# Confirm cron service
echo "|" && read -p "| Cron is available but not running. Do you want to start it? [Y/n] " input_variable_service
# Attempt to start cron
if [ -z $input_variable_service ] || [ $input_variable_service == "Y" ] || [ $input_variable_service == "y" ]
then
if [ -n "$(command -v apt-get)" ]
then
echo -e "|\n| Notice: Starting 'cron' via 'service'"
service cron start
elif [ -n "$(command -v yum)" ]
then
echo -e "|\n| Notice: Starting 'crond' via 'service'"
chkconfig crond on
service crond start
elif [ -n "$(command -v pacman)" ]
then
echo -e "|\n| Notice: Starting 'cronie' via 'systemctl'"
systemctl start cronie
systemctl enable cronie
fi
fi
# Check if cron was started
if [ -z "$(ps -Al | grep cron | grep -v grep)" ]
then
# Show error
echo -e "|\n| Error: Cron is available but could not be started\n|"
exit 1
fi
fi
# Attempt to delete previous agent
if [ -f /etc/serverwatch/agent.sh ]
then
# Remove agent dir
rm -Rf /etc/serverwatch
# Remove cron entry and user
if id -u serverwatch >/dev/null 2>&1
then
(crontab -u serverwatch -l | grep -v "/etc/serverwatch/agent.sh") | crontab -u serverwatch - && userdel serverwatch
else
(crontab -u root -l | grep -v "/etc/serverwatch/agent.sh") | crontab -u root -
fi
fi
# Create agent dir
mkdir -p /etc/serverwatch
# Download agent
echo -e "| Downloading agent.sh to /etc/serverwatch\n|\n| + $(wget -nv -o /dev/stdout -O /etc/serverwatch/agent.sh --no-check-certificate https://git.oschina.net/reruin/serverwatch/raw/master/agent.sh)"
if [ -f /etc/serverwatch/agent.sh ]
then
# Create auth file
echo "$1" > /etc/serverwatch/auth.log
# Create user
useradd serverwatch -r -d /etc/serverwatch -s /bin/false
# Modify user permissions
chown -R serverwatch:serverwatch /etc/serverwatch && chmod -R 700 /etc/serverwatch
# Modify ping permissions
chmod +s `type -p ping`
# Configure cron
crontab -u serverwatch -l 2>/dev/null | { cat; echo "*/3 * * * * bash /etc/serverwatch/agent.sh > /etc/serverwatch/cron.log 2>&1"; } | crontab -u serverwatch -
# Show success
echo -e "|\n| Success: The ServerWatch agent has been installed\n|"
# Attempt to delete installation script
if [ -f $0 ]
then
rm -f $0
fi
else
# Show error
echo -e "|\n| Error: The ServerWatch agent could not be installed\n|"
fi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。