|
34 |
# LANG is set to UTF-8. |
34 |
# LANG is set to UTF-8. |
35 |
export LANG=C |
35 |
export LANG=C |
36 |
|
36 |
|
|
|
37 |
|
38 |
die () { echo "$*" >&2 ; exit 2 ; } |
37 |
# Name of config file |
39 |
# Name of config file |
38 |
configfile="/etc/univention/univention-maintenance.conf" |
40 |
configfile="/etc/univention/univention-maintenance.conf" |
39 |
|
41 |
|
40 |
# Search config file and check values |
42 |
# Search config file and check values |
41 |
test -e $configfile || { |
43 |
test -e "$configfile" || |
42 |
echo |
44 |
die "ERROR: Config file \"$configfile\" was not found!" |
43 |
echo "ERROR: Config file \"$configfile\" was not found!" |
|
|
44 |
echo |
45 |
exit 2; |
46 |
} |
47 |
|
45 |
|
48 |
. $configfile |
46 |
. "$configfile" |
49 |
|
47 |
|
50 |
test -z "$mrtg_config" && touch "$mrtg_config" 2>/dev/null && { |
48 |
test -n "$mrtg_config" && |
51 |
echo |
49 |
touch "$mrtg_config" 2>/dev/null || |
52 |
echo "ERROR: \"\$mrtg_config\" is not valid." |
50 |
die "ERROR: \"\$mrtg_config\" is not valid." |
53 |
echo |
51 |
test -n "$wwwdir" && |
54 |
exit 2; |
52 |
mkdir -p "$wwwdir" 2>/dev/null || |
55 |
} |
53 |
die "ERROR: Missing \"\$wwwdir\" in $configfile" |
56 |
test -z "$wwwdir" && mkdir -p "$wwwdir" 2>/dev/null && { |
54 |
test -n $indexhtm || |
57 |
echo |
55 |
die "ERROR: Missing \"\$indexhtm\" in $configfile" |
58 |
echo "ERROR: Missing \"\$wwwdir\" in $configfile" |
|
|
59 |
echo |
60 |
exit 2; |
61 |
} |
62 |
test -z $indexhtm && { |
63 |
echo |
64 |
echo "ERROR: Missing \"\$indexhtm\" in $configfile" |
65 |
echo |
66 |
exit 2; |
67 |
} |
68 |
|
56 |
|
69 |
# Delete old mrtg files |
57 |
# Delete old mrtg files |
70 |
rm -f $wwwdir/ucs_*.png $wwwdir/ucs_*.txt |
58 |
rm -f "$wwwdir"/ucs_*.png "$wwwdir"/ucs_*.txt |
71 |
rm -f $wwwdir/uds_*.png $wwwdir/uds_*.txt |
59 |
rm -f "$wwwdir"/uds_*.png "$wwwdir"/uds_*.txt |
72 |
for i in $(ls $wwwdir/uds_*.log 2>/dev/null); do |
60 |
for uds in "$wwwdir"/uds_*.log |
73 |
new=$(echo $i | sed 's/\/uds/\/ucs/') |
61 |
do |
74 |
mv $i $new |
62 |
mv "$uds" "$wwwdir/ucs_${uds#$wwwdir/uds_}" |
75 |
done |
63 |
done |
76 |
|
64 |
|
77 |
# memory |
65 |
# memory |
78 |
freemem=$(more /proc/meminfo | grep ^MemFree: | awk {'print $2'}) |
66 |
freemem=$(awk '/^MemFree:/{print $2}' </proc/meminfo) |
79 |
buffers=$(more /proc/meminfo | grep ^Buffers: | awk {'print $2'}) |
67 |
buffers=$(awk '/^Buffers:/{print $2}' </proc/meminfo) |
80 |
cached=$(more /proc/meminfo | grep ^Cached: | awk {'print $2'}) |
68 |
cached=$(awk '/^Cached:/{print $2}' </proc/meminfo) |
81 |
memtotal=$(more /proc/meminfo | grep ^MemTotal: | awk {'print $2'}) |
69 |
memtotal=$(awk '/^MemTotal:/{print $2}' </proc/meminfo) |
82 |
free=$(($buffers + $cached + $freemem)) |
70 |
free=$(($buffers + $cached + $freemem)) |
83 |
memused=$(($memtotal - $free)) |
71 |
memused=$(($memtotal - $free)) |
84 |
prctmem=$((100 * $memused / $memtotal)) |
72 |
prctmem=$((100 * $memused / $memtotal)) |
85 |
mrtgname="ucs_2mem" |
73 |
mrtgname="ucs_2mem" |
86 |
echo "WorkDir: $wwwdir" > $mrtg_config |
74 |
( |
87 |
echo "Language: german" >> $mrtg_config |
75 |
echo "WorkDir: $wwwdir" |
88 |
echo "Interval: 15" >> $mrtg_config |
76 |
echo "Language: german" |
89 |
echo "Target[$mrtgname]: \`echo -e \"$prctmem\n0\nunused\nunused\"\`" >> $mrtg_config |
77 |
echo "Interval: 15" |
90 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" >> $mrtg_config |
78 |
echo "Target[$mrtgname]: \`echo -e \"$prctmem\n0\nunused\nunused\"\`" |
91 |
echo "Unscaled[$mrtgname]: dwmy" >> $mrtg_config |
79 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" |
92 |
echo "MaxBytes[$mrtgname]: 100" >> $mrtg_config |
80 |
echo "Unscaled[$mrtgname]: dwmy" |
93 |
echo "AbsMax[$mrtgname]: 99999" >> $mrtg_config |
81 |
echo "MaxBytes[$mrtgname]: 100" |
94 |
echo "Title[$mrtgname]: " >> $mrtg_config |
82 |
echo "AbsMax[$mrtgname]: 99999" |
95 |
echo "Ylegend[$mrtgname]: % " >> $mrtg_config |
83 |
echo "Title[$mrtgname]: " |
96 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" >> $mrtg_config |
84 |
echo "Ylegend[$mrtgname]: %" |
97 |
echo "Background[$mrtgname]: #ffffff" >> $mrtg_config |
85 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" |
98 |
echo "PageTop[$mrtgname]: <H1>Speicherauslastung</H1>" >> $mrtg_config |
86 |
echo "Background[$mrtgname]: #ffffff" |
|
|
87 |
echo "PageTop[$mrtgname]: <H1>Speicherauslastung</H1>" |
88 |
) >"$mrtg_config" |
99 |
mrtg "$mrtg_config" 2>/dev/null |
89 |
mrtg "$mrtg_config" 2>/dev/null |
100 |
rm -f $mrtg_config $wwwdir/ucs_*.htm* |
90 |
rm -f "$mrtg_config" "$wwwdir"/ucs_*.htm* |
101 |
echo "Auslastung des Hauptspeichers: $prctmem%" >$wwwdir/$mrtgname.txt |
91 |
echo "Auslastung des Hauptspeichers: $prctmem%" >"$wwwdir/$mrtgname.txt" |
102 |
|
92 |
|
103 |
# swap |
93 |
# swap |
104 |
swaptotal=$(more /proc/meminfo | grep ^SwapTotal: | awk {'print $2'}) |
94 |
swaptotal=$(awk '/^SwapTotal:/{print $2}' </proc/meminfo) |
105 |
swapfree=$(more /proc/meminfo | grep ^SwapFree: | awk {'print $2'}) |
95 |
swapfree=$(awk '/^SwapFree:/{print $2}' </proc/meminfo) |
106 |
swapused=$(($swaptotal - $swapfree)) |
96 |
swapused=$(($swaptotal - $swapfree)) |
107 |
if [ "$swaptotal" = "0" ]; then |
97 |
if [ "$swaptotal" = "0" ]; then |
108 |
prctswap=0 |
98 |
prctswap=0 |
109 |
else |
99 |
else |
110 |
prctswap=$((100 * $swapused / $swaptotal)) |
100 |
prctswap=$((100 * $swapused / $swaptotal)) |
111 |
fi |
101 |
fi |
112 |
mrtgname="ucs_3swap" |
102 |
mrtgname="ucs_3swap" |
113 |
echo "WorkDir: $wwwdir" > $mrtg_config |
103 |
( |
114 |
echo "Language: german" >> $mrtg_config |
104 |
echo "WorkDir: $wwwdir" |
115 |
echo "Interval: 15" >> $mrtg_config |
105 |
echo "Language: german" |
116 |
echo "Target[$mrtgname]: \`echo -e \"$prctswap\n0\nunused\nunused\"\`" >> $mrtg_config |
106 |
echo "Interval: 15" |
117 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" >> $mrtg_config |
107 |
echo "Target[$mrtgname]: \`echo -e \"$prctswap\n0\nunused\nunused\"\`" |
118 |
echo "Unscaled[$mrtgname]: dwmy" >> $mrtg_config |
108 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" |
119 |
echo "MaxBytes[$mrtgname]: 100" >> $mrtg_config |
109 |
echo "Unscaled[$mrtgname]: dwmy" |
120 |
echo "AbsMax[$mrtgname]: 99999" >> $mrtg_config |
110 |
echo "MaxBytes[$mrtgname]: 100" |
121 |
echo "Title[$mrtgname]: " >> $mrtg_config |
111 |
echo "AbsMax[$mrtgname]: 99999" |
122 |
echo "Ylegend[$mrtgname]: %" >> $mrtg_config |
112 |
echo "Title[$mrtgname]: " |
123 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" >> $mrtg_config |
113 |
echo "Ylegend[$mrtgname]: %" |
124 |
echo "Background[$mrtgname]: #ffffff" >> $mrtg_config |
114 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" |
125 |
echo "PageTop[$mrtgname]: <H1>Swapauslastung</H1>" >> $mrtg_config |
115 |
echo "Background[$mrtgname]: #ffffff" |
|
|
116 |
echo "PageTop[$mrtgname]: <H1>Swapauslastung</H1>" |
117 |
) >"$mrtg_config" |
126 |
mrtg "$mrtg_config" 2>/dev/null |
118 |
mrtg "$mrtg_config" 2>/dev/null |
127 |
rm -f $mrtg_config $wwwdir/ucs_*.htm* |
119 |
rm -f "$mrtg_config" "$wwwdir"/ucs_*.htm* |
128 |
echo "Auslastung des Auslagerungsspeicher: $prctswap%" >$wwwdir/$mrtgname.txt |
120 |
echo "Auslastung des Auslagerungsspeicher: $prctswap%" >"$wwwdir/$mrtgname.txt" |
129 |
|
121 |
|
130 |
# CPU usage of last 15 minutes |
122 |
# CPU usage of last 15 minutes |
131 |
loadavg="`echo \`cat /proc/loadavg |awk '{print $3}'\`*100 | bc | cut -f1 -d"."`" |
123 |
loadavg=$(awk '{print int($3*100)}' </proc/loadavg) |
132 |
mrtgname="ucs_0load" |
124 |
mrtgname="ucs_0load" |
133 |
echo "WorkDir: $wwwdir" > $mrtg_config |
125 |
( |
134 |
echo "Language: german" >> $mrtg_config |
126 |
echo "WorkDir: $wwwdir" |
135 |
echo "Interval: 15" >> $mrtg_config |
127 |
echo "Language: german" |
136 |
echo "Target[$mrtgname]: \`echo -e \"$loadavg\n0\nunused\nunused\"\`" >> $mrtg_config |
128 |
echo "Interval: 15" |
137 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" >> $mrtg_config |
129 |
echo "Target[$mrtgname]: \`echo -e \"$loadavg\n0\nunused\nunused\"\`" |
138 |
echo "Unscaled[$mrtgname]: dwmy" >> $mrtg_config |
130 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" |
139 |
echo "MaxBytes[$mrtgname]: 100" >> $mrtg_config |
131 |
echo "Unscaled[$mrtgname]: dwmy" |
140 |
echo "AbsMax[$mrtgname]: 99999" >> $mrtg_config |
132 |
echo "MaxBytes[$mrtgname]: 100" |
141 |
echo "Title[$mrtgname]: " >> $mrtg_config |
133 |
echo "AbsMax[$mrtgname]: 99999" |
142 |
echo "Ylegend[$mrtgname]: %" >> $mrtg_config |
134 |
echo "Title[$mrtgname]: " |
143 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" >> $mrtg_config |
135 |
echo "Ylegend[$mrtgname]: %" |
144 |
echo "Background[$mrtgname]: #ffffff" >> $mrtg_config |
136 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" |
145 |
echo "PageTop[$mrtgname]: <H1>Systemlast</H1>" >> $mrtg_config |
137 |
echo "Background[$mrtgname]: #ffffff" |
|
|
138 |
echo "PageTop[$mrtgname]: <H1>Systemlast</H1>" |
139 |
) >"$mrtg_config" |
146 |
mrtg "$mrtg_config" 2>/dev/null |
140 |
mrtg "$mrtg_config" 2>/dev/null |
147 |
rm -f $mrtg_config $wwwdir/ucs_*.htm* |
141 |
rm -f "$mrtg_config" "$wwwdir"/ucs_*.htm* |
148 |
echo "Systemlast: $loadavg%" >$wwwdir/$mrtgname.txt |
142 |
echo "Systemlast: $loadavg%" >"$wwwdir/$mrtgname.txt" |
149 |
|
143 |
|
150 |
# Session count |
144 |
# Session count |
151 |
nrsessions="`ps -C univention-sess | grep -ic univention-sess`" |
145 |
nrsessions=$(pgrep -c univention-sess) |
152 |
mrtgname="ucs_1sessions" |
146 |
mrtgname="ucs_1sessions" |
153 |
echo "WorkDir: $wwwdir" > $mrtg_config |
147 |
( |
154 |
echo "Language: german" >> $mrtg_config |
148 |
echo "WorkDir: $wwwdir" |
155 |
echo "Interval: 15" >> $mrtg_config |
149 |
echo "Language: german" |
156 |
echo "Target[$mrtgname]: \`echo -e \"$nrsessions\n0\nunused\nunused\"\`" >> $mrtg_config |
150 |
echo "Interval: 15" |
157 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" >> $mrtg_config |
151 |
echo "Target[$mrtgname]: \`echo -e \"$nrsessions\n0\nunused\nunused\"\`" |
158 |
echo "Unscaled[$mrtgname]: dwmy" >> $mrtg_config |
152 |
echo "Options[$mrtgname]: growright,noo,gauge,nobanner,noborder,nolegend,noinfo" |
159 |
echo "MaxBytes[$mrtgname]: 10" >> $mrtg_config |
153 |
echo "Unscaled[$mrtgname]: dwmy" |
160 |
echo "AbsMax[$mrtgname]: 99999" >> $mrtg_config |
154 |
echo "MaxBytes[$mrtgname]: 10" |
161 |
echo "Title[$mrtgname]: " >> $mrtg_config |
155 |
echo "AbsMax[$mrtgname]: 99999" |
162 |
echo "Ylegend[$mrtgname]: Total" >> $mrtg_config |
156 |
echo "Title[$mrtgname]: " |
163 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" >> $mrtg_config |
157 |
echo "Ylegend[$mrtgname]: Total" |
164 |
echo "Background[$mrtgname]: #ffffff" >> $mrtg_config |
158 |
echo "Colours[$mrtgname]: blau#6666ff,unused#000000,unused#000000,unused#000000" |
165 |
echo "PageTop[$mrtgname]: <H1>Sessions</H1>" >> $mrtg_config |
159 |
echo "Background[$mrtgname]: #ffffff" |
|
|
160 |
echo "PageTop[$mrtgname]: <H1>Sessions</H1>" |
161 |
) >"$mrtg_config" |
166 |
mrtg "$mrtg_config" 2>/dev/null |
162 |
mrtg "$mrtg_config" 2>/dev/null |
167 |
rm -f $mrtg_config $wwwdir/ucs_*.htm* |
163 |
rm -f "$mrtg_config" "$wwwdir"/ucs_*.htm* |
168 |
echo "Session(s): $nrsessions" >$wwwdir/$mrtgname.txt |
164 |
echo "Session(s): $nrsessions" >"$wwwdir/$mrtgname.txt" |
169 |
|
165 |
|
170 |
# Write HTML file |
166 |
# Write HTML file |
171 |
cat <<__EOT__ >$wwwdir/$indexhtm |
167 |
( |
172 |
<HTML> |
168 |
echo '<html>' |
173 |
<HEAD> |
169 |
echo '<head>' |
174 |
</HEAD> |
170 |
echo '</head>' |
175 |
<BODY BGCOLOR="#F0F0F0"> |
171 |
echo '<body bgcolor="#f0f0f0">' |
176 |
__EOT__ |
172 |
for file in "$wwwdir"/*-day.png |
177 |
for file in $wwwdir/*-day.png; do |
173 |
do |
178 |
echo "<P ALIGN=\"center\"><FONT FACE=\"ARIAL\">" >>$wwwdir/$indexhtm |
174 |
echo '<p align="center"><font face="arial">' |
179 |
cat "`echo \"$file\" | sed \"s/-day.png/.txt/\"`" >>$wwwdir/$indexhtm |
175 |
cat "${file%-day.png}.txt" |
180 |
echo "<BR>" >>$wwwdir/$indexhtm |
176 |
echo '<br/>' |
181 |
echo "<IMG SRC=\"`basename $file`\"><BR>" >>$wwwdir/$indexhtm |
177 |
echo "<img src=\"$(basename "$file")\"/><br/>" |
182 |
echo "<IMG SRC=\"`basename $file -day.png`-week.png\"><BR>" >>$wwwdir/$indexhtm |
178 |
echo "<img src=\"$(basename "$file" -day.png)-week.png\"/><br/>" |
183 |
echo "<IMG SRC=\"`basename $file -day.png`-month.png\"><BR>" >>$wwwdir/$indexhtm |
179 |
echo "<img src=\"$(basename "$file" -day.png)-month.png\"/><br/>" |
184 |
echo "<IMG SRC=\"`basename $file -day.png`-year.png\"><BR>" >>$wwwdir/$indexhtm |
180 |
echo "<img src=\"$(basename "$file" -day.png)-year.png\"/><br/>" |
185 |
echo "</FONT></P>" >>$wwwdir/$indexhtm |
181 |
echo '</font></p>' |
186 |
done |
182 |
done |
187 |
cat <<__EOT__ >>$wwwdir/$indexhtm |
183 |
echo '</body>' |
188 |
</BODY> |
184 |
echo '</html>' |
189 |
</HTML> |
185 |
) >"$wwwdir/$indexhtm" |
190 |
__EOT__ |
|
|
191 |
|