| #!/bin/bash |
| |
| CSV=FALSE |
| |
| while getopts "c" name |
| do |
| case $name in |
| c) CSV=TRUE;; |
| esac |
| done |
| shift $(( OPTIND - 1 )) |
| |
| if [ $# -gt 1 ] |
| then |
| echo "usage: $(basename $0) [ <options> ] [ <filename> ]" >&2 |
| echo "options: -c for CSV format" >&2 |
| exit 1 |
| fi |
| |
| # If the -c option is called, the option index is shifted over once and the |
| # value of the option is stored in $FILE. The default behavior is that the sed |
| # transform will read from standard input if no argument is provided and $FILE |
| # will be empty. |
| FILE=$1 |
| |
| SED_SCRIPT=" |
| s/ CHROMEOS_RELEASE_VERSION=[^ ]*// |
| s/ BOARD=[^ ]*// |
| " |
| |
| if [ $CSV = "TRUE" ] |
| then |
| echo "Location,Status,Fixed,Comments" |
| SED_SCRIPT=" |
| s/ ...[A-Z]*// |
| $SED_SCRIPT |
| s/ /,/ |
| s/$/,,/ |
| " |
| sed "$SED_SCRIPT" $FILE |
| |
| else |
| SED_SCRIPT=" |
| s/^[^ ]* ...[A-Z]* // |
| $SED_SCRIPT |
| s/is up/servod &/ |
| s/.*pwr_button:press.*/power button is stuck down/ |
| s/^\(not running servod\) \(not running brillo\)$/\1, \2/ |
| s/^not running servod$/up but not running servod, reason unknown/ |
| s/^servod not configured$/running brillo, BOARD for &/ |
| s/^servod failed$/servod running, but not working/ |
| s/^is down/no answer to ping/ |
| s/^\(not running servod\) \(ssh is down\)$/\1, ping is up, \2/ |
| " |
| sed "$SED_SCRIPT" $FILE | sort | uniq -c | |
| awk '{ print ; sum += $1 } END { printf "%7d total\n", sum }' | |
| sort | cut -c -72 |
| fi |