blob: 0c321525c985354cc011953410c41be1b18aed73 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# 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
}
defer(){
#close enough
trapstr="$1;${trapstr:-exit}"
trap "$trapstr" INT TERM EXIT KILL
}
esudo(){
# weaksauce esudo (expect sudo)
if ! is_root; then
# for the record:
# exec sudo -E "$0" "$@"
error "You are not root enough for this script"
exit 23 # go to hell
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 test -e /etc/preferred-apps/google.xml; 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
}
# user management
has_user(){
egrep "^$1:" /etc/passwd >/dev/null
}
|