mirror of
https://github.com/clearlinux/telemetrics-client.git
synced 2026-10-03 23:48:33 +00:00
116 lines
2.4 KiB
Bash
Executable File
116 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
declare -a SPECIAL_UNITS=(
|
|
hprobe.timer
|
|
telemd.socket
|
|
telemd.path
|
|
)
|
|
|
|
declare -a SERVICES=(
|
|
hprobe.service
|
|
journal-probe.service
|
|
oops-probe.service
|
|
pstore-probe.service
|
|
klogscanner.service
|
|
telemd.service
|
|
)
|
|
|
|
SCRIPT="$0"
|
|
TELEM_DIR=/etc/telemetrics
|
|
OPT_OUT_FILE=${TELEM_DIR}/opt-out
|
|
|
|
exit_ok() {
|
|
echo "$1" > /dev/stderr
|
|
exit 0
|
|
}
|
|
|
|
exit_err() {
|
|
echo "$1" > /dev/stderr
|
|
exit 1
|
|
}
|
|
|
|
notice() {
|
|
echo "$1" > /dev/stderr
|
|
}
|
|
|
|
for_each_service() {
|
|
local action=$1 && shift
|
|
local -a array=($*)
|
|
for service in "${array[@]}"; do
|
|
systemctl $action $service
|
|
[ $? -ne 0 ] && notice "Failed to $action ${service}. Continuing..."
|
|
done
|
|
}
|
|
|
|
telem_stop() {
|
|
# the special units must be stopped first so that activation no longer happens
|
|
for_each_service "stop" ${SPECIAL_UNITS[@]}
|
|
for_each_service "stop" ${SERVICES[@]}
|
|
}
|
|
|
|
telem_start() {
|
|
[ -f $OPT_OUT_FILE ] && exit_err "Opt out is enabled. Cannot start services."
|
|
# the units in SERVICES are activated as needed, so no need to start them
|
|
for_each_service "start" ${SPECIAL_UNITS[@]}
|
|
}
|
|
|
|
telem_opt_out() {
|
|
[ -f $OPT_OUT_FILE ] && exit_ok "Already opted out. Nothing to do."
|
|
mkdir -p $TELEM_DIR || exit_err "Failed to create ${TELEM_DIR}."
|
|
touch $OPT_OUT_FILE || exit_err "Failed to create ${OPT_OUT_FILE}."
|
|
telem_stop
|
|
}
|
|
|
|
telem_opt_in() {
|
|
[ ! -f $OPT_OUT_FILE ] && exit_ok "Already opted in. Nothing to do."
|
|
rm -f $OPT_OUT_FILE || exit_err "Failed to remove ${OPT_OUT_FILE}."
|
|
telem_start
|
|
}
|
|
|
|
telem_restart() {
|
|
telem_stop
|
|
telem_start
|
|
}
|
|
|
|
usage() {
|
|
printf "$SCRIPT - Control actions for telemetry services\n"
|
|
printf "\n"
|
|
printf "%15s %-65s\n" "stop" "Stops all running telemetry services"
|
|
printf "%15s %-65s\n" "start" "Starts all telemetry services"
|
|
printf "%15s %-65s\n" "restart" "Restarts all telemetry services"
|
|
printf "%15s %-65s\n" "opt-in" "Opts in to telemetry, and starts telemetry services"
|
|
printf "%15s %-65s\n" "opt-out" "Opts out of telemetry, and stops telemetry services"
|
|
printf "\n"
|
|
exit 2
|
|
}
|
|
|
|
if [ $# -ne 1 ]; then
|
|
usage
|
|
fi
|
|
|
|
if [ $EUID -ne 0 ]; then
|
|
exit_err "Must be root to run this command. Exiting..."
|
|
fi
|
|
|
|
SUBCOMMAND=$1
|
|
|
|
case $SUBCOMMAND in
|
|
opt-out)
|
|
telem_opt_out ;;
|
|
opt-in)
|
|
telem_opt_in ;;
|
|
stop)
|
|
telem_stop ;;
|
|
start)
|
|
telem_start ;;
|
|
restart)
|
|
telem_restart ;;
|
|
*)
|
|
notice "Unknown command passed to $SCRIPT"
|
|
usage ;;
|
|
esac
|
|
|
|
exit 0
|
|
|
|
# vi: ts=8 sw=2 sts=2 et tw=80
|