-
Notifications
You must be signed in to change notification settings - Fork 0
/
ramdisk_smf_rmv.sh
executable file
·155 lines (135 loc) · 3.99 KB
/
ramdisk_smf_rmv.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
#!/sbin/sh
#
# Ramdisk SMF remove.
# Yuri Voinov (C) 2007,2020
#
# ident "@(#)ramdisk_smf_rmv.sh 2.0 03/09/20 YV"
#
#############
# Variables #
#############
PROGRAM_NAME="Ramdisk"
SERVICE_NAME="ramdisk"
SCRIPT_NAME="$SERVICE_NAME"
SMF_XML="$SERVICE_NAME"".xml"
SMF_DIR="/var/svc/manifest/system"
SVC_MTD="/lib/svc/method"
CFG_DIR="/etc"
CFG_FILE="ram.conf"
# OS utilities
CUT=`which cut`
ECHO=`which echo`
GREP=`which grep`
ID=`which id`
RM=`which rm`
SVCADM=`which svcadm`
SVCCFG=`which svccfg`
SVCS=`which svcs`
UNAME=`which uname`
WHOAMI=`which whoami`
ZONENAME=`which zonename`
OS_VER=`$UNAME -r|$CUT -f2 -d"."`
OS_NAME=`$UNAME -s|$CUT -f1 -d" "`
OS_FULL=`$UNAME -sr`
ZONE=`$ZONENAME`
################
# Subroutines. #
################
# Non-global zones notification
non_global_zones_r ()
{
if [ "$ZONE" != "global" ]; then
$ECHO "================================================================="
$ECHO "This is NON GLOBAL zone $ZONE. To complete uninstallation please remove"
$ECHO "script $SCRIPT_NAME"
$ECHO "from $SVC_MTD"
$ECHO "in GLOBAL zone manually AFTER uninstalling autostart."
$ECHO "================================================================="
fi
}
remove_backups_logs_and_mounts ()
{
while read v_param
do
# If row commented or empty line, skip it
if [ "`$ECHO $v_param | $CUT -b 1`" = "#" -o -z "`$ECHO $v_param | $CUT -b 1`" ]; then
continue
fi
# Get ramdisk properties from config
RAMDISK_MOUNT="`$ECHO $v_param | $CUT -f9 -d':'`"
RAMDISK_BACKUP_DIR="`$ECHO $v_param | $CUT -f10 -d':'`"
RAMDISK_LOG="`$ECHO $v_param | $CUT -f12 -d':'`"
# Remove backups
$RM -Rf $RAMDISK_BACKUP_DIR>/dev/null 2>&1
# Remove logs
$RM -Rf $RAMDISK_LOG>/dev/null 2>&1
# Remove mounts
$RM -Rf $RAMDISK_MOUNT>/dev/null 2>&1
done < $CFG_FILE
}
##############
# Main block #
##############
# Pre-remove checks.
# OS version check
if [ "$OS_NAME" != "SunOS" ]; then
$ECHO "ERROR: Unsupported OS $OS_NAME. Exiting..."
exit 1
elif [ "$OS_VER" != "10" ]; then
$ECHO "ERROR: Unsupported $OS_NAME version $OS_VER. Exiting..."
exit 1
fi
# Superuser check
if [ ! `$ID | $CUT -f1 -d" "` = "uid=0(root)" ]; then
$ECHO "ERROR: you must be super-user to run this script."
exit 1
fi
$ECHO "------------------------------------------"
$ECHO "- $PROGRAM_NAME SMF service will be remove now -"
$ECHO "- -"
$ECHO "- Note 1: -"
$ECHO "- Running $PROGRAM_NAME service will be stopped!-"
$ECHO "- -"
$ECHO "- Note 2: -"
$ECHO "- Backup directories, logs and mounts -"
$ECHO "- also will be removed! -"
$ECHO "- -"
$ECHO "- Press <Enter> to continue, -"
$ECHO "- or <Ctrl+C> to cancel -"
$ECHO "------------------------------------------"
read p
# Disabling and stopping SMF service
$ECHO "Disabling and stopping running $PROGRAM_NAME service..."
$SVCADM disable $SERVICE_NAME>/dev/null 2>&1
# Remove SMF files
$ECHO "Remove $PROGRAM_NAME SMF files..."
if [ -f $SVC_MTD/$SCRIPT_NAME -a -f $SMF_DIR/$SMF_XML ]; then
$SVCCFG delete -f svc:/system/filesystem/$SERVICE_NAME:default>/dev/null 2>&1
retcode=`$ECHO $?`
case "$retcode" in
0)
$ECHO "*** $PROGRAM_NAME SMF service uninstallation successfuly"
;;
*)
$ECHO "*** $PROGRAM_NAME SMF service uninstallation process has errors"
exit 1
;;
esac
$RM -f $SVC_MTD/$SCRIPT_NAME
$RM $SMF_DIR/$SMF_XML
else
$ECHO "ERROR: $PROGRAM_NAME SMF service files not found. Exiting..."
exit 1
fi
# Get backup directories and logs from config file and remove them
$ECHO "Remove backups, logs and mounts..."
remove_backups_logs_and_mounts
# Finally remove config file
$ECHO "Remove $CFG_FILE file..."
$RM -f $CFG_DIR/$CFG_FILE>/dev/null 2>&1
# Check for non-global zones uninstallation
non_global_zones_r
$ECHO "Verify $PROGRAM_NAME SMF uninstallation..."
# Check uninstallation
$SVCS $SERVICE_NAME>/dev/null 2>&1
exit 0