178 lines
4.1 KiB
Bash
178 lines
4.1 KiB
Bash
#!/usr/bin/env bash
|
|
#=================================================
|
|
# System Required: CentOS/Debian/ArchLinux with Systemd Support
|
|
# Description: Tianji Report
|
|
# Author: moonrailgun
|
|
#=================================================
|
|
|
|
Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"
|
|
Info="${Green_font_prefix}[Info]${Font_color_suffix}"
|
|
Error="${Red_font_prefix}[Error]${Font_color_suffix}"
|
|
Tip="${Green_font_prefix}[Tip]${Font_color_suffix}"
|
|
|
|
function check_sys() {
|
|
if [[ -f /etc/redhat-release ]]; then
|
|
release="centos"
|
|
elif grep -q -E -i "debian|ubuntu" /etc/issue; then
|
|
release="debian"
|
|
elif grep -q -E -i "centos|red hat|redhat" /etc/issue; then
|
|
release="centos"
|
|
elif grep -q -E -i "Arch|Manjaro" /etc/issue; then
|
|
release="arch"
|
|
elif grep -q -E -i "debian|ubuntu" /proc/version; then
|
|
release="debian"
|
|
elif grep -q -E -i "centos|red hat|redhat" /proc/version; then
|
|
release="centos"
|
|
else
|
|
echo -e "Tianji Report not support this linux version"
|
|
exit 1
|
|
fi
|
|
bit=$(uname -m)
|
|
}
|
|
|
|
function check_pid() {
|
|
PID=$(pgrep -f "tianji-reporter")
|
|
}
|
|
|
|
function install_dependencies() {
|
|
case ${release} in
|
|
centos)
|
|
yum install -y wget curl
|
|
;;
|
|
debian)
|
|
apt-get update -y
|
|
apt-get install -y wget curl
|
|
;;
|
|
arch)
|
|
pacman -Syu --noconfirm wget curl
|
|
;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function input_dsn() {
|
|
defaultServer="{{DEFAULT_SERVER}}"
|
|
echo -e "${Info} Please input server url, press enter use default value(default: $defaultServer)"
|
|
read -re serverUrl
|
|
serverUrl=${serverUrl:-$defaultServer}
|
|
|
|
defaultWorkspace="{{DEFAULT_WORKSPACE}}"
|
|
echo -e "${Info} Please input workspaceId, press enter use default value(default: $defaultWorkspace)"
|
|
read -re workspace
|
|
workspace=${workspace:-$defaultWorkspace}
|
|
}
|
|
|
|
service_conf=/usr/lib/systemd/system/tianji-reporter.service
|
|
|
|
function write_service() {
|
|
echo -e "${Info} Write to systemd configuration"
|
|
cat >${service_conf} <<-EOF
|
|
[Unit]
|
|
Description=Tianji-Reporter
|
|
Documentation=https://github.com/msgbyte/tianji
|
|
After=network.target
|
|
|
|
[Service]
|
|
ExecStart=/usr/local/tianji/reporter/tianji-reporter --url "${serverUrl}" --workspace "${workspace}"
|
|
ExecReload=/bin/kill -HUP $MAINPID
|
|
Restart=on-failure
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
}
|
|
|
|
function enable_service() {
|
|
write_service
|
|
systemctl enable tianji-reporter
|
|
systemctl start tianji-reporter
|
|
check_pid
|
|
if [[ -n ${PID} ]]; then
|
|
echo -e "${Info} Tianji Reporter Started!"
|
|
else
|
|
echo -e "${Error} Tianji Reporter Start Failed!"
|
|
fi
|
|
}
|
|
|
|
function restart_service() {
|
|
write_service
|
|
systemctl daemon-reload
|
|
systemctl restart tianji-reporter
|
|
check_pid
|
|
if [[ -n ${PID} ]]; then
|
|
echo -e "${Info} Tianji Reporter Started!"
|
|
else
|
|
echo -e "${Error} Tianji Reporter Start Failed!"
|
|
fi
|
|
}
|
|
|
|
function reset_config() {
|
|
restart_service
|
|
}
|
|
|
|
function install_client() {
|
|
case ${bit} in
|
|
x86_64)
|
|
arch=amd64
|
|
;;
|
|
# i386)
|
|
# arch=386
|
|
# ;;
|
|
aarch64 | aarch64_be | arm64 | armv8b | armv8l)
|
|
arch=arm64
|
|
;;
|
|
# arm | armv6l | armv7l | armv5tel | armv5tejl)
|
|
# arch=arm
|
|
# ;;
|
|
# mips | mips64)
|
|
# arch=mips
|
|
# ;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|
|
echo -e "${Info} Downloading ${arch} binary file..."
|
|
mkdir -p /usr/local/tianji/reporter/
|
|
cd /tmp
|
|
wget --no-check-certificate "https://github.com/msgbyte/tianji/releases/latest/download/tianji-reporter-linux-${arch}" -O tianji-reporter-linux-${arch}
|
|
mv tianji-reporter-linux-${arch} /usr/local/tianji/reporter/tianji-reporter
|
|
chmod +x /usr/local/tianji/reporter/tianji-reporter
|
|
enable_service
|
|
}
|
|
|
|
function auto_install() {
|
|
dsn=$(echo ${*})
|
|
install_client
|
|
}
|
|
|
|
function uninstall_client() {
|
|
systemctl stop tianji-reporter
|
|
systemctl disable tianji-reporter
|
|
rm -rf /usr/local/tianji/reporter/
|
|
rm -rf /usr/lib/systemd/system/tianji-reporter.service
|
|
}
|
|
|
|
check_sys
|
|
case "$1" in
|
|
uninstall|uni)
|
|
uninstall_client
|
|
;;
|
|
reset_conf|re)
|
|
input_dsn
|
|
reset_config
|
|
;;
|
|
-dsn)
|
|
shift 1
|
|
install_dependencies
|
|
auto_install ${*}
|
|
;;
|
|
*)
|
|
install_dependencies
|
|
input_dsn
|
|
install_client
|
|
;;
|
|
esac
|