@@ -5,7 +5,6 @@ consumersdata=0
55startservices=1
66kafkaclean=0
77ds_services_stop=" chef-client f2k n2klocd redborder-monitor"
8- ds_services_start=" zookeeper kafka k2http f2k rb-sociald rb-snmp nmspd n2klocd freeradius redborder-monitor chef-client sfacctd logstash redborder-ale redborder-scanner"
98
109function usage() {
1110 echo " rb_clean_zookeeper.sh [-h][-f][-c][-l][-k]"
@@ -16,7 +15,45 @@ function usage() {
1615 exit 0
1716}
1817
19- while getopts " fdschlk" name
18+ function clean_consumers() {
19+ local path=" /consumers"
20+ response=$( /usr/bin/zkCli.sh -server localhost:2181 ls /consumers 2> /dev/null | grep ' ^\[.*\]$' )
21+
22+ # Remove brackets, split by comma, and trim whitespace
23+ IFS=' ,' read -ra children <<< " ${response#[}"
24+ for child in " ${children[@]} " ; do
25+ child=" ${child% ]} "
26+ child=" $( echo " $child " | xargs) " # Trim whitespace
27+ [[ -n " $child " ]] && echo " Deleting: $path /$child "
28+ /usr/bin/zkCli.sh -server localhost:2181 delete $path /$child 2> /dev/null | grep ' ^\[.*\]$'
29+ done
30+ }
31+
32+ function start_services() {
33+ local ds_services_start=" zookeeper kafka k2http f2k n2klocd redborder-monitor chef-client sfacctd logstash redborder-ale redborder-scanner"
34+
35+ # Cache available services
36+ local systemctl_services=$( systemctl list-unit-files --no-pager --no-legend | awk ' {print $1}' )
37+ local rbcli_services=$( rbcli service list | awk ' {print $1}' )
38+
39+ for service_name in $ds_services_start ; do
40+ if echo " $systemctl_services " | grep -qw " ^$service_name " ; then
41+ # Try to start the service
42+ if systemctl start " $service_name " ; then
43+ echo " Service '$service_name ' started successfully."
44+ else
45+ echo " Failed to start '$service_name '. Please check the service logs."
46+ fi
47+ elif echo " $rbcli_services " | grep -qw " ^$service_name " ; then
48+ echo " Info: Service '$service_name ' exists in rbcli but is not enabled in systemctl. Please enable it first."
49+ else
50+ echo " Error: Service '$service_name ' not found in systemctl or rbcli."
51+ fi
52+ done
53+ }
54+
55+ while getopts " fydschlk" name
56+
2057do
2158 case $name in
2259 f) force=1;;
@@ -56,10 +93,10 @@ if [ "x$VAR" == "xy" -o "x$VAR" == "xY" ]; then
5693 else
5794 systemctl start zookeeper
5895 e_title " Deleting specific zookeeper data"
59- [ $consumersdata -eq 1 ] && echo " rmr /consumers " | rb_zkcli & > /dev/null
96+ clean_consumers
6097 fi
6198
6299 if [ $startservices -eq 1 ]; then
63- systemctl start $ds_services_start
100+ start_services
64101 fi
65102fi
0 commit comments