mirror of
https://github.com/bjango/istatserverlinux.git
synced 2025-10-21 15:08:08 +00:00
191 lines
5.4 KiB
Bash
191 lines
5.4 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
# This script is meant for quick & easy install via:
|
|
# $ curl -fsSL https://raw.githubusercontent.com/bjango/istatserverlinux/master/get-istatserver.sh
|
|
# $ sh get-istatserver.sh
|
|
#
|
|
|
|
command_exists() {
|
|
command -v "$@" > /dev/null 2>&1
|
|
}
|
|
|
|
get_distribution() {
|
|
lsb_dist=""
|
|
|
|
if [ -r /etc/os-release ]; then
|
|
lsb_dist="$(. /etc/os-release && echo "$ID")"
|
|
else
|
|
lsb_dist="$(uname)"
|
|
fi
|
|
|
|
echo "$lsb_dist"
|
|
}
|
|
|
|
get_distribution_like() {
|
|
lsb_dist_like=""
|
|
|
|
if [ -r /etc/os-release ]; then
|
|
lsb_dist_like="$(. /etc/os-release && echo "$ID_LIKE")"
|
|
fi
|
|
|
|
echo "$lsb_dist_like"
|
|
}
|
|
|
|
we_did_it() {
|
|
if command_exists istatserver && [ -e /usr/local/etc/istatserver/istatserver.conf ]; then
|
|
(
|
|
set -x
|
|
$sh_c 'istatserver -v'
|
|
) || true
|
|
fi
|
|
|
|
echo
|
|
echo "Perfetto, you got yourself a brand new iStat Server."
|
|
echo
|
|
echo "You can now run it as a daemon using the following command:"
|
|
echo " sudo /usr/local/bin/istatserver -d"
|
|
echo
|
|
echo "The istatserver config file is located at"
|
|
echo " /usr/local/etc/istatserver/istatserver.conf"
|
|
echo
|
|
echo "iStat View will ask for a passcode the first time you connect."
|
|
echo "You can edit this passcode in the istatserver config file."
|
|
echo
|
|
echo "Here is your current passcode"
|
|
grep -w /usr/local/etc/istatserver/istatserver.conf -e server_code | grep -v "#" | sed -e "s/server_code//g" | sed -e 's/[ \t]//g'
|
|
echo
|
|
echo "Make sure to take a look at the documentation at:"
|
|
echo "https://bjango.com/help/istat3/istatserverlinux/"
|
|
echo
|
|
echo "Learn how to run istatserver at boot:"
|
|
echo "https://github.com/bjango/istatserverlinux#starting-istat-server-at-boot"
|
|
echo
|
|
}
|
|
|
|
istat_pls() {
|
|
echo "# Executing iStat Server for Linux install script"
|
|
|
|
user="$(id -un 2>/dev/null || true)"
|
|
|
|
sh_c='sh -c'
|
|
if [ "$user" != 'root' ]; then
|
|
if command_exists sudo; then
|
|
sh_c='sudo -E sh -c'
|
|
else
|
|
if command_exists su; then
|
|
sh_c='su -c'
|
|
else
|
|
echo "Error: this installer needs the ability to run commands as root."
|
|
echo "We are unable to find either 'sudo' or 'su' available to make this happen."
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Some platform detection
|
|
lsb_dist=$( get_distribution )
|
|
lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"
|
|
|
|
lsb_dist_like=$( get_distribution_like )
|
|
lsb_dist_like="$(echo "$lsb_dist_like" | tr '[:upper:]' '[:lower:]')"
|
|
|
|
|
|
# Check if OS is supported or find what OS it is like and try that instead
|
|
case "$lsb_dist" in
|
|
ubuntu|debian|raspbian|linuxmint|elementary|centos|fedora|freebsd|dragonfly|netbsd|solus|arch|opensuse|manjaro|slackware|sabayon|gentoo)
|
|
;;
|
|
*)
|
|
case "$lsb_dist_like" in
|
|
ubuntu|debian)
|
|
lsb_dist="ubuntu";
|
|
;;
|
|
fedora)
|
|
lsb_dist="fedora";
|
|
;;
|
|
freebsd)
|
|
lsb_dist="freebsd";
|
|
;;
|
|
arch)
|
|
lsb_dist="arch";
|
|
;;
|
|
opensuse)
|
|
lsb_dist="opensuse";
|
|
;;
|
|
esac
|
|
esac
|
|
|
|
|
|
# Run setup for each distribution accordingly
|
|
|
|
echo "Installing required packages"
|
|
|
|
case "$lsb_dist" in
|
|
ubuntu|debian|raspbian|linuxmint|elementary)
|
|
$sh_c "apt-get update -qq > /dev/null"
|
|
$sh_c "apt-get install -y -qq curl g++ autoconf autogen libxml2-dev libssl-dev libsqlite3-dev libsensors4-dev libavahi-common-dev libavahi-client-dev > /dev/null"
|
|
;;
|
|
centos|fedora)
|
|
if [ -r /bin/dnf ]; then
|
|
$sh_c "dnf -q -y install curl autoconf automake gcc-c++ libxml2-devel openssl-devel sqlite-devel lm_sensors lm_sensors-devel avahi-devel > /dev/null"
|
|
else
|
|
$sh_c "yum -q -y install curl autoconf automake gcc-c++ libxml2-devel openssl-devel sqlite-devel lm_sensors lm_sensors-devel avahi-devel > /dev/null"
|
|
fi
|
|
;;
|
|
freebsd|dragonfly)
|
|
$sh_c "env ASSUME_ALWAYS_YES=YES pkg install curl autoconf automake openssl sqlite > /dev/null"
|
|
;;
|
|
solus)
|
|
$sh_c "eopkg install -y -c system.devel > /dev/null"
|
|
$sh_c "eopkg install -y curl openssl-devel sqlite3-devel lm_sensors-devel > /dev/null"
|
|
;;
|
|
opensuse)
|
|
$sh_c "zypper install -y gcc-c++ libxml2-devel autoconf automake curl openssl-devel sqlite3-devel > /dev/null"
|
|
;;
|
|
#openbsd)
|
|
# $sh_c "pkg_add -I automake-1.9.6p12 autoconf-2.69p2 > /dev/null"
|
|
# ;;
|
|
arch|manjaro)
|
|
$sh_c "pacman -S --noconfirm automake autoconf openssl sqlite > /dev/null || :"
|
|
;;
|
|
netbsd)
|
|
$sh_c "pkg_add -I automake autoconf > /dev/null || :"
|
|
;;
|
|
slackware)
|
|
$sh_c "slackpkg -batch=on -default_answer=y install automake autoconf gcc-g++ curl lm_sensors > /dev/null || :"
|
|
;;
|
|
sabayon|gentoo)
|
|
$sh_c "emerge --ask=n automake autoconf gcc curl > /dev/null || :"
|
|
;;
|
|
*)
|
|
echo "unsupported OS";
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if [ -r ./istatserverlinux ]; then
|
|
$sh_c "rm -r ./istatserverlinux"
|
|
fi
|
|
|
|
echo "Downloading istatserver"
|
|
$sh_c "curl -fsSL https://github.com/bjango/istatserverlinux/archive/master.tar.gz -o istatserverlinux.tar.gz"
|
|
|
|
echo "Extracting istatserver"
|
|
$sh_c "tar -zxf istatserverlinux.tar.gz"
|
|
$sh_c "mv istatserverlinux-* istatserverlinux"
|
|
|
|
echo "Building istatserver"
|
|
$sh_c "cd istatserverlinux && ./autogen > /dev/null"
|
|
$sh_c "cd istatserverlinux && ./configure > /dev/null"
|
|
$sh_c "cd istatserverlinux && make > /dev/null"
|
|
$sh_c "cd istatserverlinux && make install > /dev/null"
|
|
|
|
echo "Cleaning up"
|
|
$sh_c "rm -r ./istatserverlinux > /dev/null"
|
|
$sh_c "rm ./istatserverlinux.tar.gz > /dev/null"
|
|
we_did_it
|
|
exit 0
|
|
}
|
|
|
|
istat_pls
|