]> git.madduck.net Git - etc/awesome.git/blobdiff - .config/awesome/lain/scripts/dfs

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

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.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Add '.config/awesome/lain/' from commit 'fc6e880da40668c6e9bd9da3786ff2fcae519c75'
[etc/awesome.git] / .config / awesome / lain / scripts / dfs
diff --git a/.config/awesome/lain/scripts/dfs b/.config/awesome/lain/scripts/dfs
new file mode 100755 (executable)
index 0000000..df87150
--- /dev/null
@@ -0,0 +1,397 @@
+#!/usr/bin/env sh
+#
+#   Adapted from Eridan's "fs" (cleanup, enhancements and switch to bash/Linux)
+#   JM,  10/12/2004
+#
+#   Integrated into Lain in september 2013
+#   https://github.com/copycat-killer/lain
+
+#   Requires gawk
+
+# -------------------------------------------------------------------------
+#   Decoding options
+# -------------------------------------------------------------------------
+USAGE="Usage: $0 [-h(elp)] | [-n(arrow mode)] | [-w(eb output) | --type=<fstype> | --exclude-type=<fstype>]"
+
+NARROW_MODE=0
+WEB_OUTPUT=0
+DF_OPTIONS=""
+
+while [ $# -gt 0 ]; do
+case "$1" in
+"-h" )
+echo $USAGE
+exit
+;;
+"-d" )
+DEBUG=1
+;;
+"-n" )
+NARROW_MODE=1
+;;
+"-w" )
+WEB_OUTPUT=1
+;;
+--type=*)
+DF_OPTIONS+=" $1"
+;;
+--exclude-type=*)
+DF_OPTIONS+=" $1"
+;;
+* )
+echo $USAGE
+exit
+;;
+esac
+shift
+done
+
+# -------------------------------------------------------------------------
+#   Preparations
+# -------------------------------------------------------------------------
+SYSTEM=`uname -s`
+PATTERN="/"
+
+case "$SYSTEM" in
+"Linux" )
+DF_COMMAND="/usr/bin/env df -k"
+SORT_COMMAND="/usr/bin/env sort -k6"
+AWK_COMMAND="/usr/bin/env awk"
+;;
+* )
+DF_COMMAND="/bin/df -k"
+SORT_COMMAND="/usr/bin/sort -k6"
+AWK_COMMAND="/usr/bin/env gawk"
+;;
+esac
+
+# Add additional df options
+DF_COMMAND+=$DF_OPTIONS
+
+# -------------------------------------------------------------------------
+#   Grabbing "df" result
+# -------------------------------------------------------------------------
+DF_RESULT=`$DF_COMMAND`
+if [ ! -z $DEBUG ]; then
+echo "--> DF_RESULT:"
+echo "$DF_RESULT"
+echo ""
+fi
+
+# -------------------------------------------------------------------------
+#   Preprocessing "df" result, to join split logical lines
+# -------------------------------------------------------------------------
+PREPROCESSING_RESULT=` \
+                                                                                echo "$DF_RESULT" | $AWK_COMMAND -v PATTERN=$PATTERN \
+                                                                                '
+                                                                                NF == 1 {
+                                                                                        printf ("%s", $0)
+                                                                                }
+
+NF == 5 {
+       printf ("%s\n", $0)
+}
+
+NF > 6  {
+}
+
+NF == 6 {
+       printf ("%s\n", $0)
+}'
+`
+if [ ! -z $DEBUG ]; then
+echo "--> PREPROCESSING_RESULT:"
+echo "$PREPROCESSING_RESULT"
+echo ""
+fi
+
+SORTED_FILE_SYSTEMS_INFO=`echo "$PREPROCESSING_RESULT" | $SORT_COMMAND`
+
+if [ ! -z $DEBUG ]; then
+echo "--> SORTED_FILE_SYSTEMS_INFO:"
+echo "$SORTED_FILE_SYSTEMS_INFO"
+echo ""
+fi
+
+# -------------------------------------------------------------------------
+#   Computing mount point max length
+# -------------------------------------------------------------------------
+MOUNT_POINT_MAX_LENGTH=` \
+                                                                                        echo "$SORTED_FILE_SYSTEMS_INFO" | $AWK_COMMAND -v PATTERN=$PATTERN \
+                                                                                        '
+                                                                                        BEGIN       {
+                                                                                                mount_point_length_max = 15;
+                                                                                        }
+
+END     {
+       printf ("%d", mount_point_length_max);
+}
+
+$0 ~ PATTERN    {
+#       printf ("$6 = %s\n", $6);
+
+       mount_point = $6;
+#       printf ("mount_point = %s\n", mount_point);
+
+       mount_point_length = length (mount_point);
+#       printf ("mount_point_length = %d\n", mount_point_length);
+
+       if (mount_point_length > mount_point_length_max)
+               mount_point_length_max = mount_point_length;
+}'
+`
+if [ ! -z $DEBUG ]; then
+echo "MOUNT_POINT_MAX_LENGTH:      $MOUNT_POINT_MAX_LENGTH"
+fi
+
+# -------------------------------------------------------------------------
+#   Computing mount point data max size
+# -------------------------------------------------------------------------
+MOUNT_POINT_MAX_SIZE=` \
+                                                                                echo "$SORTED_FILE_SYSTEMS_INFO" | $AWK_COMMAND -v PATTERN=$PATTERN \
+                                                                                '
+                                                                                BEGIN       {
+                                                                                        mount_point_size_max = 0;
+                                                                                }
+
+END     {
+       printf ("%d", mount_point_size_max);
+}
+
+$0 ~ PATTERN    {
+#       df -k shows k_bytes!
+#       printf ("$2 = %s\n", $2);
+
+       mount_point_size = $2 * 1024;
+#       printf ("mount_point_size = %d\n", mount_point_size);
+
+       if (mount_point_size > mount_point_size_max)
+               mount_point_size_max = mount_point_size;
+}'
+`
+if [ ! -z $DEBUG ]; then
+echo "MOUNT_POINT_MAX_SIZE:      $MOUNT_POINT_MAX_SIZE"
+fi
+
+# -------------------------------------------------------------------------
+#   Let's go!
+# -------------------------------------------------------------------------
+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 \
+                        '
+#   {printf ("$0 = %s\n", $0);}
+#   {printf ("$1 = %s\n", $1);}
+#   {printf ("PATTERN = %s\n", PATTERN);}
+#   {printf ("LEFT_COLUMN = %s\n", LEFT_COLUMN);}
+
+                        BEGIN       {
+                                k_bytes = 1024.0;
+                                m_bytes = 1024.0 * k_bytes;
+                                g_bytes = 1024.0 * m_bytes;
+                                t_bytes = 1024.0 * g_bytes;
+
+                                if (WEB_OUTPUT)
+                                {
+                                        all_stars = "**************************************************";
+                                        current_date = strftime ("%d-%m-%Y @ %H:%M:%S", localtime (systime ()));
+                                        free_threshold = 10; # %
+
+                                printf ("<!-- DEBUT CONTENU -->\n");
+
+                                        printf ( \
+                                                        "<A NAME=\"top\"></A>\n" \
+                                                        "<P ALIGN=CENTER><SPAN CLASS=\"titleblue\">%s</SPAN><SPAN CLASS=\"textbold\">  --  STATUS OF <SPAN CLASS=\"titlered\">ALCOR</SPAN> FILE SYSTEMS</SPAN></P><BR>\n",
+                                                        current_date )
+
+                                                printf ("<TABLE WIDTH=\"100%%\" BORDER=1>\n");
+
+                                        printf ( \
+                                                        "<TR>\n" \
+                                                        "<TD ALIGN=LEFT><STRONG>Mount point</STRONG></TD>\n" \
+                                                        "<TD ALIGN=CENTER><STRONG>%% Usato&nbsp;(<SPAN CLASS=\"titleblue\">*</SPAN>)" \
+                                                        "&nbsp;-&nbsp;%% Free&nbsp;(<SPAN CLASS=\"titlegreen\">*</SPAN>)</STRONG></TD>\n" \
+                                                        "<TD ALIGN=CENTER><STRONG>%% Used</STRONG></TD>\n" \
+                                                        "<TD ALIGN=CENTER><STRONG>Free</STRONG></TD>\n" \
+                                                        "<TD ALIGN=CENTER><STRONG>Total</STRONG></TD>\n" \
+                                                        "</TR>\n" );
+                                }
+                                else
+                                {
+                                        narrow_margin = "       ";
+#           printf ("%-*s", LEFT_COLUMN + 2, "Mount point");
+                                                if (NARROW_MODE)
+                                                        printf ("\n%s", narrow_margin);
+                                                else
+                                                        printf ("%-*s", LEFT_COLUMN + 2, "");
+                                        print "                                                    Used     Free       Total ";
+                                        if (! NARROW_MODE)
+                                                print " ";
+                                }
+                        }
+
+END     {
+       if (WEB_OUTPUT)
+       {
+               printf ("</TABLE>\n");
+
+               printf ("<!-- FIN CONTENU -->\n");
+       }
+       else
+       {
+               if (NARROW_MODE)
+                       printf ("%s", narrow_margin);
+               else
+                       printf ("%-*s", LEFT_COLUMN + 2, "");
+               print "|----|----|----|----|----|----|----|----|----|----|"
+                       if (NARROW_MODE)
+                               printf ("\n%s", narrow_margin);
+                       else
+                               printf ("%-*s", LEFT_COLUMN + 2, "");
+               print "0   10   20   30   40   50   60   70   80   90  100";
+               print "";
+       }
+}
+
+$0 ~ PATTERN    {
+
+       if (index ($0, "members") == 0 && index ($0, "Download") == 0 && index ($0, "admin") == 0)
+       {
+#       df -k shows k_bytes!
+
+               total_size = $2 * k_bytes;
+               free_size = $4 * k_bytes;
+               percentage_occupied = substr($5, 0, 3);
+               mount_point = $6;
+
+               percentage_free = int (100 - percentage_occupied);
+
+#       reduction_factor: 2
+               stars_number = int (percentage_occupied / 2);
+
+               if (WEB_OUTPUT)
+               {
+                       posGroup = index (mount_point, "scratch");
+                       if (posGroup == 0)
+                               posGroup = index (mount_point, "u1");
+                       if (posGroup == 0)
+                               posGroup = index (mount_point, "u2");
+                       if (posGroup == 0)
+                               posGroup = index (mount_point, "u4");
+                       if (posGroup == 0)
+                               posGroup = index (mount_point, "u5");
+
+                       printf ("<TR>\n");
+
+                       if (posGroup > 0 || percentage_free < free_threshold)
+                       {
+                               if (percentage_free < free_threshold)
+                               {
+                                       class = "titlered";
+                                       if (posGroup == 0)
+                                               posGroup = 1;   # to display the whole mount_point in this color anyway
+                               }
+                               else if ((index (mount_point, "scratch") != 0) || (index (mount_point, "u1") != 0) || (index (mount_point, "u2") != 0))
+                               {
+                                       class = "titleorange";
+                                       posGroup = 1;   # to display the whole mount_point in this color
+                               }
+                               else if ((index (mount_point, "u4") != 0) || (index (mount_point, "u5") != 0))
+                               {
+                                       class = "titlebrown";
+                                       posGroup = 1;   # to display the whole mount_point in this color
+                               }
+
+                               printf ( \
+                                               "<TD ALIGN=LEFT>%s<SPAN CLASS=\"%s\">%s</SPAN></TD>\n",
+                                               substr (mount_point, 1, posGroup - 1),
+                                               class,
+                                               substr (mount_point, posGroup) );
+                       }
+                       else
+                       {
+                               printf ("<TD ALIGN=LEFT>%s</TD>\n", mount_point);
+                       }
+
+                       printf ( \
+                                       "<TD ALIGN=CENTER><SPAN CLASS=\"titleblue\">%s</SPAN><SPAN CLASS=\"titlegreen\">%s</SPAN></TD>\n",
+                                       substr (all_stars, 1, stars_number), substr (all_stars, stars_number + 1, 49) );
+
+                       if (percentage_free < free_threshold)
+                       {
+                               color_beginning = "<SPAN CLASS=\"titlered\">";
+                               color_end = "</SPAN>"
+                       }
+                       else
+                       {
+                               color_beginning = "";
+                               color_end = ""
+                       }
+
+                       if (total_size > 1 * t_bytes)
+                               printf ( \
+                                               "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Tb</TD><TD ALIGN=RIGHT>%5.1f Tb</TD>\n", \
+                                               color_beginning, percentage_occupied, color_end, free_size / t_bytes, total_size / t_bytes \
+                                               );
+                       else if (total_size > 1 * g_bytes)
+                               printf ( \
+                                               "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Gb</TD><TD ALIGN=RIGHT>%5.1f Gb</TD>\n", \
+                                               color_beginning, percentage_occupied, color_end, free_size / g_bytes, total_size / g_bytes \
+                                               );
+                       else if (total_size > 1 * m_byptes)
+                               printf ( \
+                                               "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Mb</TD><TD ALIGN=RIGHT>%5.1f Mb</TD>\n", \
+                                               color_beginning, percentage_occupied, color_end, free_size / m_bytes, total_size / m_bytes \
+                                               );
+                       else
+                               printf ( \
+                                               "<TD ALIGN=RIGHT>%s%3d%%%s</TD><TD ALIGN=RIGHT>%5.1f Kb</TD><TD ALIGN=RIGHT>%5.1f Kb</TD>\n", \
+                                               color_beginning, percentage_occupied, color_end, free_size / k_bytes, total_size / k_bytes \
+                                               );
+
+                       printf ("</TR>\n");
+               }
+
+               else
+               {
+#           printf ("percentage_occupied = %d\n", percentage_occupied);
+#           printf ("percentage_free = %d\n", percentage_free);
+
+                       printf ("%-*s", LEFT_COLUMN + 2, mount_point);
+                       if (NARROW_MODE)
+                               printf ("\n%s", narrow_margin);
+
+#           printf ("stars_number = %d\n", stars_number);
+
+                       printf ("|");
+                       for (i = 1; i <= stars_number && i <= 49; i++)
+                       {
+                               printf ("%s", "*");
+                       }
+                       for (i = stars_number + 1; i <= 49; i++)
+                       {
+                               printf ("%s", "-");
+                       }
+
+
+                       if (total_size > 1 * t_bytes)
+                               printf ( \
+                                               "| %3d%%   %6.1f   %6.1f Tb\n", \
+                                               percentage_occupied, free_size / t_bytes, total_size / t_bytes \
+                                               );
+                       else if (total_size > 1 * g_bytes)
+                               printf ( \
+                                               "| %3d%%   %6.1f   %6.1f Gb\n", \
+                                               percentage_occupied, free_size / g_bytes, total_size / g_bytes \
+                                               );
+                       else if (total_size > 1 * m_byptes)
+                               printf ( \
+                                               "| %3d%%   %6.1f   %6.1f Mb\n", \
+                                               percentage_occupied, free_size / m_bytes, total_size / m_bytes \
+                                               );
+                       else
+                               printf ( \
+                                               "| %3d%%   %6.1f   %6.1f Kb\n", \
+                                               percentage_occupied, free_size / k_bytes, total_size / k_bytes \
+                                               );
+               }
+       }   # if
+}'