| #!/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 |