All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
3 # Adapted from Eridan's "fs" (cleanup, enhancements and switch to bash/Linux)
6 # Integrated into Lain in september 2013
7 # https://github.com/copycat-killer/lain
11 # -------------------------------------------------------------------------
13 # -------------------------------------------------------------------------
14 USAGE="Usage: $0 [-h(elp)] | [-n(arrow mode)] | [-w(eb output)]"
19 while [ $# -gt 0 ]; do
42 # -------------------------------------------------------------------------
44 # -------------------------------------------------------------------------
50 DF_COMMAND="/usr/bin/env df -k"
51 SORT_COMMAND="/usr/bin/env sort -k6"
52 AWK_COMMAND="/usr/bin/env awk"
55 DF_COMMAND="/bin/df -k"
56 SORT_COMMAND="/usr/bin/sort -k6"
57 AWK_COMMAND="/usr/bin/env gawk"
61 # -------------------------------------------------------------------------
62 # Grabbing "df" result
63 # -------------------------------------------------------------------------
64 DF_RESULT=`$DF_COMMAND`
65 if [ ! -z $DEBUG ]; then
71 # -------------------------------------------------------------------------
72 # Preprocessing "df" result, to join split logical lines
73 # -------------------------------------------------------------------------
74 PREPROCESSING_RESULT=` \
75 echo "$DF_RESULT" | $AWK_COMMAND -v PATTERN=$PATTERN \
92 if [ ! -z $DEBUG ]; then
93 echo "--> PREPROCESSING_RESULT:"
94 echo "$PREPROCESSING_RESULT"
98 SORTED_FILE_SYSTEMS_INFO=`echo "$PREPROCESSING_RESULT" | $SORT_COMMAND`
100 if [ ! -z $DEBUG ]; then
101 echo "--> SORTED_FILE_SYSTEMS_INFO:"
102 echo "$SORTED_FILE_SYSTEMS_INFO"
106 # -------------------------------------------------------------------------
107 # Computing mount point max length
108 # -------------------------------------------------------------------------
109 MOUNT_POINT_MAX_LENGTH=` \
110 echo "$SORTED_FILE_SYSTEMS_INFO" | $AWK_COMMAND -v PATTERN=$PATTERN \
113 mount_point_length_max = 15;
117 printf ("%d", mount_point_length_max);
121 # printf ("$6 = %s\n", $6);
124 # printf ("mount_point = %s\n", mount_point);
126 mount_point_length = length (mount_point);
127 # printf ("mount_point_length = %d\n", mount_point_length);
129 if (mount_point_length > mount_point_length_max)
130 mount_point_length_max = mount_point_length;
133 if [ ! -z $DEBUG ]; then
134 echo "MOUNT_POINT_MAX_LENGTH: $MOUNT_POINT_MAX_LENGTH"
137 # -------------------------------------------------------------------------
138 # Computing mount point data max size
139 # -------------------------------------------------------------------------
140 MOUNT_POINT_MAX_SIZE=` \
141 echo "$SORTED_FILE_SYSTEMS_INFO" | $AWK_COMMAND -v PATTERN=$PATTERN \
144 mount_point_size_max = 0;
148 printf ("%d", mount_point_size_max);
152 # df -k shows k_bytes!
153 # printf ("$2 = %s\n", $2);
155 mount_point_size = $2 * 1024;
156 # printf ("mount_point_size = %d\n", mount_point_size);
158 if (mount_point_size > mount_point_size_max)
159 mount_point_size_max = mount_point_size;
162 if [ ! -z $DEBUG ]; then
163 echo "MOUNT_POINT_MAX_SIZE: $MOUNT_POINT_MAX_SIZE"
166 # -------------------------------------------------------------------------
168 # -------------------------------------------------------------------------
169 echo "$SORTED_FILE_SYSTEMS_INFO" | $AWK_COMMAND -v DEBUG=$DEBUG -v PATTERN=$PATTERN -v NARROW_MODE=$NARROW_MODE -v LEFT_COLUMN=$MOUNT_POINT_MAX_LENGTH -v MAX_SIZE=$MOUNT_POINT_MAX_SIZE -v SCALE=$SCALE -v WEB_OUTPUT=$WEB_OUTPUT \
171 # {printf ("$0 = %s\n", $0);}
172 # {printf ("$1 = %s\n", $1);}
173 # {printf ("PATTERN = %s\n", PATTERN);}
174 # {printf ("LEFT_COLUMN = %s\n", LEFT_COLUMN);}
178 m_bytes = 1024.0 * k_bytes;
179 g_bytes = 1024.0 * m_bytes;
180 t_bytes = 1024.0 * g_bytes;
184 all_stars = "**************************************************";
185 current_date = strftime ("%d-%m-%Y @ %H:%M:%S", localtime (systime ()));
186 free_threshold = 10; # %
188 printf ("<!-- DEBUT CONTENU -->\n");
191 "<A NAME=\"top\"></A>\n" \
192 "<P ALIGN=CENTER><SPAN CLASS=\"titleblue\">%s</SPAN><SPAN CLASS=\"textbold\"> -- STATUS OF <SPAN CLASS=\"titlered\">ALCOR</SPAN> FILE SYSTEMS</SPAN></P><BR>\n",
195 printf ("<TABLE WIDTH=\"100%%\" BORDER=1>\n");
199 "<TD ALIGN=LEFT><STRONG>Mount point</STRONG></TD>\n" \
200 "<TD ALIGN=CENTER><STRONG>%% Usato (<SPAN CLASS=\"titleblue\">*</SPAN>)" \
201 " - %% Free (<SPAN CLASS=\"titlegreen\">*</SPAN>)</STRONG></TD>\n" \
202 "<TD ALIGN=CENTER><STRONG>%% Used</STRONG></TD>\n" \
203 "<TD ALIGN=CENTER><STRONG>Free</STRONG></TD>\n" \
204 "<TD ALIGN=CENTER><STRONG>Total</STRONG></TD>\n" \
210 # printf ("%-*s", LEFT_COLUMN + 2, "Mount point");
212 printf ("\n%s", narrow_margin);
214 printf ("%-*s", LEFT_COLUMN + 2, "");
215 print " Used Free Total ";
224 printf ("</TABLE>\n");
226 printf ("<!-- FIN CONTENU -->\n");
231 printf ("%s", narrow_margin);
233 printf ("%-*s", LEFT_COLUMN + 2, "");
234 print "|----|----|----|----|----|----|----|----|----|----|"
236 printf ("\n%s", narrow_margin);
238 printf ("%-*s", LEFT_COLUMN + 2, "");
239 print "0 10 20 30 40 50 60 70 80 90 100";
246 if (index ($0, "members") == 0 && index ($0, "Download") == 0 && index ($0, "admin") == 0)
248 # df -k shows k_bytes!
250 total_size = $2 * k_bytes;
251 free_size = $4 * k_bytes;
252 percentage_occupied = substr($5, 0, 3);
255 percentage_free = int (100 - percentage_occupied);
257 # reduction_factor: 2
258 stars_number = int (percentage_occupied / 2);
262 posGroup = index (mount_point, "scratch");
264 posGroup = index (mount_point, "u1");
266 posGroup = index (mount_point, "u2");
268 posGroup = index (mount_point, "u4");
270 posGroup = index (mount_point, "u5");
274 if (posGroup > 0 || percentage_free < free_threshold)
276 if (percentage_free < free_threshold)
280 posGroup = 1; # to display the whole mount_point in this color anyway
282 else if ((index (mount_point, "scratch") != 0) || (index (mount_point, "u1") != 0) || (index (mount_point, "u2") != 0))
284 class = "titleorange";
285 posGroup = 1; # to display the whole mount_point in this color
287 else if ((index (mount_point, "u4") != 0) || (index (mount_point, "u5") != 0))
289 class = "titlebrown";
290 posGroup = 1; # to display the whole mount_point in this color
294 "<TD ALIGN=LEFT>%s<SPAN CLASS=\"%s\">%s</SPAN></TD>\n",
295 substr (mount_point, 1, posGroup - 1),
297 substr (mount_point, posGroup) );
301 printf ("<TD ALIGN=LEFT>%s</TD>\n", mount_point);
305 "<TD ALIGN=CENTER><SPAN CLASS=\"titleblue\">%s</SPAN><SPAN CLASS=\"titlegreen\">%s</SPAN></TD>\n",
306 substr (all_stars, 1, stars_number), substr (all_stars, stars_number + 1, 49) );
308 if (percentage_free < free_threshold)
310 color_beginning = "<SPAN CLASS=\"titlered\">";
311 color_end = "</SPAN>"
315 color_beginning = "";
319 if (total_size > 1 * t_bytes)
321 "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Tb</TD><TD ALIGN=RIGHT>%5.1f Tb</TD>\n", \
322 color_beginning, percentage_occupied, color_end, free_size / t_bytes, total_size / t_bytes \
324 else if (total_size > 1 * g_bytes)
326 "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Gb</TD><TD ALIGN=RIGHT>%5.1f Gb</TD>\n", \
327 color_beginning, percentage_occupied, color_end, free_size / g_bytes, total_size / g_bytes \
329 else if (total_size > 1 * m_byptes)
331 "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Mb</TD><TD ALIGN=RIGHT>%5.1f Mb</TD>\n", \
332 color_beginning, percentage_occupied, color_end, free_size / m_bytes, total_size / m_bytes \
336 "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Kb</TD><TD ALIGN=RIGHT>%5.1f Kb</TD>\n", \
337 color_beginning, percentage_occupied, color_end, free_size / k_bytes, total_size / k_bytes \
345 # printf ("percentage_occupied = %d\n", percentage_occupied);
346 # printf ("percentage_free = %d\n", percentage_free);
348 printf ("%-*s", LEFT_COLUMN + 2, mount_point);
350 printf ("\n%s", narrow_margin);
352 # printf ("stars_number = %d\n", stars_number);
355 for (i = 1; i <= stars_number && i <= 49; i++)
359 for (i = stars_number + 1; i <= 49; i++)
365 if (total_size > 1 * t_bytes)
367 "| %3d%% %6.1f %6.1f Tb\n", \
368 percentage_occupied, free_size / t_bytes, total_size / t_bytes \
370 else if (total_size > 1 * g_bytes)
372 "| %3d%% %6.1f %6.1f Gb\n", \
373 percentage_occupied, free_size / g_bytes, total_size / g_bytes \
375 else if (total_size > 1 * m_byptes)
377 "| %3d%% %6.1f %6.1f Mb\n", \
378 percentage_occupied, free_size / m_bytes, total_size / m_bytes \
382 "| %3d%% %6.1f %6.1f Kb\n", \
383 percentage_occupied, free_size / k_bytes, total_size / k_bytes \