# logging msg() { echo "$*" >&2; } info() { msg "** $*"; } error() { msg "!! $*"; } ## usage: die [REASON...] die() { test $# -gt 0 && error "$*" error 'Bailing out.' exit 1 } exists(){ type "$1" >/dev/null 2>/dev/null; } is_root(){ test $(id -u) -eq 0 } internet(){ ping -w 1 google.de >/dev/null 2>&1 } defer(){ #close enough trapstr="$1;${trapstr:-exit}" trap "$trapstr" INT TERM EXIT KILL } esudo(){ # weaksauce esudo, bail out if we are not root if ! is_root; then # for the records: # exec sudo -E "$0" "$@" die "You are not root enough to run this script" 2>&1 fi } get_hostname(){ # finds the current hostname # if ENV HOSTN is set echo $HOSTN # We try the following: # $HOSTN # $HOSTNAME # hostname # uci system.hostname # /etc/hostname # if everything fails, it returns 1 and prints 'unknown' if [ -n "${HOSTN:-}" ] ; then printf "${HOSTN:-}" elif [ -n "${HOSTNAME:-}" ] ;then printf "$HOSTNAME" elif exists hostname ; then printf "$(hostname)" elif exists uci ; then printf "$(uci get system.@system[0].hostname)" elif [ -e /etc/hostname ] ;then printf "$(cat /etc/hostname)" else printf "unknown"; return 1 fi return 0 } line_to_dot(){ while read line; do printf .; done; } get_os() { # TODO: find all the release files #if grep -q 'Linux' /etc/*release 2>/dev/null || grep -qe 'Linux' /etc/issue 2>/dev/null; then if grep -q 'Linux' /etc/lsb-release 2>/dev/null || grep -q 'Linux' /etc/issue 2>/dev/null; then echo 'linux' elif exists getprop ; then echo 'android' elif test -e /etc/openwrt_release; then echo 'openwrt' elif uname -s | grep -qi 'darwin'; then echo 'osx' else warn "Cannot determine your operating system, falling back to Linux" echo 'linux' fi }