forked from ideascube/ideasbox-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
executable file
·170 lines (159 loc) · 3.43 KB
/
install.sh
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/bin/bash
usage() {
echo "Usage: ./install.sh [options]"
echo "Availables options :"
echo " -h --help : display this help"
echo " -v --verbose : the script will be verbose"
}
get_param() {
while test $# -gt 0; do
case "$1" in
-h|--help)
usage
exit 0
;;
-v|--verbose)
VERBOSE=YES
;;
*)
break
;;
esac
shift
done
}
update_package_list() {
# update package list
if [[ -z "$VERBOSE" ]];then
echo -n "Update package list: "
sudo apt-get update &>> install.log
check wait
else
sudo apt-get update 2>&1 | tee -a install.log
echo "Update package list: `check`"
fi
}
update_package() {
# update serveur
if [[ -z "$VERBOSE" ]]; then
echo -n "Update package: "
sudo apt-get upgrade -y &>> install.log
check wait
else
sudo apt-get upgrade -y 2>&1 | tee -a install.log
echo "Update package: `check`"
fi
}
install_needed_packages() {
# find all conponent to install
ALL_INSTALL=$(find . -mindepth 2 -name "install.sh")
# launch each install script
for SCRIPT in $ALL_INSTALL; do
if [[ -x $SCRIPT ]]; then
sudo $SCRIPT "install.log"
else
echo "$SCRIPT is not executable"
fi
done
}
init_install() {
if [[ -z "$FIRST_TIME" ]]; then
if [[ -e install.log ]]; then
mv install.log install.log.old
fi
source res/check.sh
sudo ls &> /dev/null
update_package_list
FIRST_TIME=NOPE
fi
}
select_packages_to_install() {
PREV="Back to previous menu"
PS3="Please enter your choice: "
# find package list
packages=( `find . -mindepth 2 -name "install.sh" | sed -r "s:\./([a-zA-Z0-9\-]+)/install.sh:\1:"` )
while [[ -z "$STOP" ]]; do
select opt in "${packages[@]}" "$PREV"; do
if [[ -n "$opt" ]]; then
if [[ "$opt" = $PREV ]]; then
echo "$PREV"
STOP="Yep"
else
init_install
./$opt/install.sh
fi
else
echo "Invalid choice"
fi
break
done
done
unset STOP
}
update_hostname() {
while [[ -z "$hostname" ]]; do
echo "You can change the hostname when prompt or keep the current one by typyng 'Enter'"
echo "If you change the hostname, make it as explicit as possible"
echo "The current hostname is: `hostname`"
echo -n "Please, enter the hostname: "
read hostname
if [[ "${#hostname}" -eq 0 ]]; then
hostname="nope"
elif [[ "${#hostname}" -lt 4 ]]; then
echo "Hostname too short"
unset hostname
else
sudo sed -i "s/.*/$hostname/" /etc/hostname
sudo sed -ir "s/(127.0.1.1\s+)[a-zA-Z0-9_-]+/\1$hostname/" /etc/hosts
sudo echo 192.168.2.1 $hostname >> /etc/hosts
sudo hostname $hostname
fi
done
unset hostname
}
main_menu() {
PS3="Please enter your choice: "
options=("Full install" "Update packages" "Install all needed package" "Select which package to install" "Change hostname")
while [[ -z "$STOP" ]]; do
select opt in "${options[@]}" "Quit"; do
case $opt in
"Full install")
update_hostname
init_install
update_package
install_needed_packages
;;
"Update packages")
init_install
update_package
;;
"Install all needed package")
init_install
install_needed_packages
;;
"Select which package to install")
select_packages_to_install
;;
"Change hostname")
update_hostname
;;
"Quit")
unset FIRST_TIME
STOP="Yep"
;;
*)
echo "Invalid option"
;;
esac
break
done
echo " "
done
unset STOP
}
main() {
get_param "$@"
echo -e "Welcome in the IdeasBox installer.\n"
main_menu
}
main "$@"