-
Notifications
You must be signed in to change notification settings - Fork 23
/
info.sh
279 lines (258 loc) · 10.7 KB
/
info.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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
# Demyx
# https://demyx.sh
# shellcheck shell=bash
#
# demyx info <app> <args>
#
demyx_info() {
demyx_event
DEMYX_ARG_2="${1:-$DEMYX_ARG_2}"
local DEMYX_INFO="DEMYX - INFO"
local DEMYX_INFO_FLAG=
local DEMYX_INFO_FLAG_ENV=
local DEMYX_INFO_FLAG_ENV_GREP=
local DEMYX_INFO_FLAG_JSON=
local DEMYX_INFO_FLAG_RAW=
local DEMYX_INFO_FLAG_LOGIN=
local DEMYX_INFO_FLAG_NO_VOLUME=
local DEMYX_INFO_TRANSIENT="$DEMYX_TMP"/demyx_transient
while :; do
DEMYX_INFO_FLAG="${2:-}"
case "$DEMYX_INFO_FLAG" in
--env=?*)
DEMYX_INFO_FLAG_ENV=true
DEMYX_INFO_FLAG_ENV_GREP="${DEMYX_INFO_FLAG#*=}"
;;
-j)
DEMYX_INFO_FLAG_JSON=true
;;
-l)
DEMYX_INFO_FLAG_LOGIN=true
;;
-nv)
DEMYX_INFO_FLAG_NO_VOLUME=true
;;
-r)
DEMYX_INFO_FLAG_RAW=true
;;
--)
shift
break
;;
-?*)
demyx_error flag "$DEMYX_INFO_FLAG"
;;
*)
break
esac
shift
done
case "$DEMYX_ARG_2" in
app|apps)
demyx_info_apps
;;
system)
demyx_info_system
;;
*)
if [[ -n "$DEMYX_ARG_2" ]]; then
demyx_arg_valid
demyx_info_app
else
demyx_help info
fi
;;
esac
}
#
# Displays app's entire environment variables.
#
demyx_info_app() {
demyx_event
local DEMYX_INFO_APP_DB_VOLUME=
local DEMYX_INFO_APP_ENV=
local DEMYX_INFO_APP_ENV_VAR=
local DEMYX_INFO_APP_ENV_VAL=
local DEMYX_INFO_APP_JSON=
local DEMYX_INFO_APP_VOLUME=
local DEMYX_INFO_APP_WP_VOLUME=
if [[ "$DEMYX_INFO_FLAG_ENV" = true ]]; then
demyx_app_env wp DEMYX_APP_PATH
DEMYX_INFO_APP_ENV="$(grep -i "$DEMYX_INFO_FLAG_ENV_GREP" "$DEMYX_APP_PATH"/.env || true)"
if [[ -n "$DEMYX_INFO_APP_ENV" ]]; then
echo "$DEMYX_INFO_APP_ENV"
else
demyx_error custom "$DEMYX_INFO_FLAG_ENV_GREP doesn't exist"
fi
elif [[ "$DEMYX_INFO_FLAG_LOGIN" = true ]]; then
demyx_source wp
demyx_app_env wp "
DEMYX_APP_AUTH_PASSWORD
DEMYX_APP_AUTH_USERNAME
DEMYX_APP_DEV_PASSWORD
DEMYX_APP_DOMAIN
DEMYX_APP_OLS_ADMIN_PASSWORD
DEMYX_APP_OLS_ADMIN_USERNAME
DEMYX_APP_STACK
MARIADB_ROOT_PASSWORD
WORDPRESS_DB_HOST
WORDPRESS_DB_NAME
WORDPRESS_DB_PASSWORD
WORDPRESS_DB_USER
WORDPRESS_USER
WORDPRESS_USER_PASSWORD
"
{
echo "Basic Auth Username $DEMYX_APP_AUTH_USERNAME"
echo "Basic Auth Password $DEMYX_APP_AUTH_PASSWORD"
echo
echo "Code Server Login $(demyx_app_proto)://$(demyx_app_domain)/demyx/cs/"
echo "Code Server Password $DEMYX_APP_DEV_PASSWORD"
if [[ "$DEMYX_APP_STACK" = ols || "$DEMYX_APP_STACK" = ols-bedrock ]]; then
echo
echo "OLS Admin Login $(demyx_app_proto)://$(demyx_app_domain)/demyx/ols/"
echo "OLS Admin Username $DEMYX_APP_OLS_ADMIN_USERNAME"
echo "OLS Admin Password $DEMYX_APP_OLS_ADMIN_PASSWORD"
fi
echo
echo "MariaDB DB Host $WORDPRESS_DB_HOST"
echo "MariaDB DB Name $WORDPRESS_DB_NAME"
echo "MariaDB DB Username $WORDPRESS_DB_USER"
echo "MariaDB DB Password $WORDPRESS_DB_PASSWORD"
echo "MariaDB Root Password $MARIADB_ROOT_PASSWORD"
echo
echo "WordPress Login $(demyx_app_login)"
echo "WordPress Username $WORDPRESS_USER"
echo "WordPress Password $WORDPRESS_USER_PASSWORD"
} > "$DEMYX_INFO_TRANSIENT"
demyx_divider_title "$DEMYX_INFO" "Login Credentials"
cat < "$DEMYX_INFO_TRANSIENT"
else
demyx_app_env wp "
DEMYX_APP_DB_CONTAINER
DEMYX_APP_PATH
DEMYX_APP_WP_CONTAINER
WORDPRESS_DB_NAME
"
if [[ -z "$DEMYX_INFO_FLAG_NO_VOLUME" ]]; then
DEMYX_INFO_APP_DB_VOLUME="$(docker exec -t "$DEMYX_APP_DB_CONTAINER" du -sh /demyx/"$WORDPRESS_DB_NAME" | cut -f1)"
DEMYX_INFO_APP_WP_VOLUME="$(docker exec -t "$DEMYX_APP_WP_CONTAINER" du -sh /demyx | cut -f1)"
DEMYX_INFO_APP_VOLUME="^DB VOLUME^ $DEMYX_INFO_APP_DB_VOLUME\n"
DEMYX_INFO_APP_VOLUME+="^WP VOLUME^ $DEMYX_INFO_APP_WP_VOLUME\n"
DEMYX_INFO_APP_JSON="{\"db_volume\":\"${DEMYX_INFO_APP_DB_VOLUME}\",\"wp_volume\":\"${DEMYX_INFO_APP_WP_VOLUME}\","
fi
if [[ "$DEMYX_INFO_FLAG_JSON" = true ]]; then
while IFS= read -r DEMYX_INFO_APP_ENV; do
DEMYX_INFO_APP_ENV_VAR="$(echo "${DEMYX_INFO_APP_ENV/=*/}" | awk '{print tolower($0)}')"
DEMYX_INFO_APP_ENV_VAL="${DEMYX_INFO_APP_ENV/*=/}"
DEMYX_INFO_APP_JSON+="\"${DEMYX_INFO_APP_ENV_VAR}\":\"${DEMYX_INFO_APP_ENV_VAL}\","
done < <(grep '=' < "$DEMYX_APP_PATH"/.env)
echo "${DEMYX_INFO_APP_JSON%,*}}" > "$DEMYX_TMP"/demyx_info
cat < "$DEMYX_TMP"/demyx_info
else
demyx_app_env wp DEMYX_APP_PATH
{
cat < "$DEMYX_APP_PATH"/.env | sed '/#/d'
} > "$DEMYX_INFO_TRANSIENT"
demyx_divider_title "$DEMYX_INFO" "DB Volume ($DEMYX_INFO_APP_DB_VOLUME) - WP Volume ($DEMYX_INFO_APP_WP_VOLUME)"
column "$DEMYX_INFO_TRANSIENT"
fi
fi
}
#
# # TODO - List apps that are currently installed.
#
demyx_info_apps() {
demyx_event
local DEMYX_INFO_APPS_COUNT=
DEMYX_INFO_APPS_COUNT="$(find "$DEMYX_WP" -mindepth 1 -maxdepth 1 -type d | wc -l)"
if (( "$DEMYX_INFO_APPS_COUNT" > 0 )); then
cd "$DEMYX_WP" || exit
{
for DEMYX_INFO_APPS_I in *; do
echo "$DEMYX_INFO_APPS_I"
done
} > "$DEMYX_INFO_TRANSIENT"
if [[ "$DEMYX_INFO_FLAG_RAW" = true ]]; then
cat < "$DEMYX_INFO_TRANSIENT"
else
demyx_divider_title "$DEMYX_INFO" "Apps ($DEMYX_INFO_APPS_COUNT)"
cat < "$DEMYX_INFO_TRANSIENT"
fi
fi
}
#
# Display basic information of demyx system.
#
demyx_info_system() {
demyx_event
local DEMYX_INFO_SYSTEM_CONTAINER_DEAD=
DEMYX_INFO_SYSTEM_CONTAINER_DEAD="$(docker ps -q --filter "status=exited" | wc -l)"
local DEMYX_INFO_SYSTEM_CONTAINER_RUNNING=
DEMYX_INFO_SYSTEM_CONTAINER_RUNNING="$(docker ps -q | wc -l)"
local DEMYX_INFO_SYSTEM_DF=
DEMYX_INFO_SYSTEM_DF="$(df -h /demyx | sed '1d')"
local DEMYX_INFO_SYSTEM_DISK_PERCENTAGE=
DEMYX_INFO_SYSTEM_DISK_PERCENTAGE="$(echo "$DEMYX_INFO_SYSTEM_DF" | awk '{print $5}')"
local DEMYX_INFO_SYSTEM_DISK_TOTAL=
DEMYX_INFO_SYSTEM_DISK_TOTAL="$(echo "$DEMYX_INFO_SYSTEM_DF" | awk '{print $2}')"
local DEMYX_INFO_SYSTEM_DISK_USED=
DEMYX_INFO_SYSTEM_DISK_USED="$(echo "$DEMYX_INFO_SYSTEM_DF" | awk '{print $3}')"
local DEMYX_INFO_SYSTEM_LOAD_AVERAGE=
DEMYX_INFO_SYSTEM_LOAD_AVERAGE="$(cat < /proc/loadavg | awk '{print $1 " " $2 " " $3}')"
local DEMYX_INFO_SYSTEM_MEMORY=
DEMYX_INFO_SYSTEM_MEMORY="$(free -m)"
local DEMYX_INFO_SYSTEM_MEMORY_TOTAL=
DEMYX_INFO_SYSTEM_MEMORY_TOTAL="$(echo "$DEMYX_INFO_SYSTEM_MEMORY" | grep Mem | awk '{print $2}')"
local DEMYX_INFO_SYSTEM_MEMORY_USED=
DEMYX_INFO_SYSTEM_MEMORY_USED="$(echo "$DEMYX_INFO_SYSTEM_MEMORY" | grep Mem | awk '{print $3}')"
local DEMYX_INFO_SYSTEM_UPTIME=
DEMYX_INFO_SYSTEM_UPTIME="$(uptime | awk -F '[,]' '{print $1}' | awk -F '[up]' '{print $3}' | sed 's|^.||')"
local DEMYX_INFO_SYSTEM_WP_BACKUPS=
DEMYX_INFO_SYSTEM_WP_BACKUPS="$([[ -d "$DEMYX_BACKUP_WP" ]] && du -sh "$DEMYX_BACKUP_WP" | awk '{print $1}' || echo 0)"
local DEMYX_INFO_SYSTEM_WP_COUNT=
DEMYX_INFO_SYSTEM_WP_COUNT="$(find "$DEMYX_WP" -mindepth 1 -maxdepth 1 -type d | wc -l)"
if [[ "$DEMYX_INFO_FLAG_JSON" = true ]]; then
{
echo "{"
echo "\"build\":\"$DEMYX_BUILD\","
echo "\"version\":\"$DEMYX_VERSION\","
echo "\"hostname\":\"$DEMYX_HOSTNAME\","
echo "\"ip\":\"$DEMYX_SERVER_IP\","
echo "\"wp_count\":\"$DEMYX_INFO_SYSTEM_WP_COUNT\","
echo "\"wp_backups\":\"$DEMYX_INFO_SYSTEM_WP_BACKUPS\","
echo "\"disk_used\":\"$DEMYX_INFO_SYSTEM_DISK_USED\","
echo "\"disk_total\":\"$DEMYX_INFO_SYSTEM_DISK_TOTAL\","
echo "\"disk_total_percentage\":\"$DEMYX_INFO_SYSTEM_DISK_PERCENTAGE\","
echo "\"memory_used\":\"$DEMYX_INFO_SYSTEM_MEMORY_USED\","
echo "\"memory_total\":\"$DEMYX_INFO_SYSTEM_MEMORY_TOTAL\","
echo "\"uptime\":\"$DEMYX_INFO_SYSTEM_UPTIME\","
echo "\"load_average\":\"$DEMYX_INFO_SYSTEM_LOAD_AVERAGE\","
echo "\"container_running\":\"$DEMYX_INFO_SYSTEM_CONTAINER_RUNNING\","
echo "\"container_dead\":\"$DEMYX_INFO_SYSTEM_CONTAINER_DEAD\""
echo "}"
} > "$DEMYX_INFO_TRANSIENT"
sed -i ':a;N;\$!ba;s/\n/ /g' "$DEMYX_INFO_TRANSIENT"
cat < "$DEMYX_INFO_TRANSIENT"
else
{
echo "Build $DEMYX_BUILD"
echo "Version $DEMYX_VERSION"
echo "Hostname $DEMYX_HOSTNAME"
echo "IP $DEMYX_SERVER_IP"
echo "Apps $DEMYX_INFO_SYSTEM_WP_COUNT"
echo "Backups $DEMYX_INFO_SYSTEM_WP_BACKUPS"
echo "Disk Used $DEMYX_INFO_SYSTEM_DISK_USED"
echo "Disk Total $DEMYX_INFO_SYSTEM_DISK_TOTAL"
echo "Disk Total % $DEMYX_INFO_SYSTEM_DISK_PERCENTAGE"
echo "Memory Used $DEMYX_INFO_SYSTEM_MEMORY_USED"
echo "Memory Total $DEMYX_INFO_SYSTEM_MEMORY_TOTAL"
echo "Uptime $DEMYX_INFO_SYSTEM_UPTIME"
echo "Load Average $DEMYX_INFO_SYSTEM_LOAD_AVERAGE"
echo "Running Containers $DEMYX_INFO_SYSTEM_CONTAINER_RUNNING"
echo "Dead Containers $DEMYX_INFO_SYSTEM_CONTAINER_DEAD"
} > "$DEMYX_INFO_TRANSIENT"
demyx_divider_title "$DEMYX_INFO" "System Information"
cat < "$DEMYX_INFO_TRANSIENT"
fi
}