Instantly share code, notes, and snippets.

Embed
What would you like to do?
Shows Vital Product Data (VPD) for Chrome OS device.
#!/bin/sh -e
### 'cb' - Shows Vital Product Data (VPD) for Chrome OS device.
###
### Typical VPD data
###
## sudo dump_vpd_log --full --stdout
## "mlb_serial_number"="CN0V..................."
## "ppid"="CN0V..................."
## "asset_tag"=""
## "model_name"="Dell Chromebook 13 7310"
## "serial_number"="8SV...."
## "service_tag"="8SV...."
## "initial_locale"="en-US"
## "initial_timezone"="America/Los_Angeles"
## "keyboard_layout"="xkb:us::eng"
## "region"="us"
## "rlz_brand_code"="DEAE"
## "___ro_rw_delimiter___"="___RW_VPD_below___"
## "gbind_attribute"="=CioKIFFntDzhD9lBY3xoNwpHSYnzGMo....................................."
## "ubind_attribute"="=CioKIF_ufa0KSDK3iN4ANjHdCA9S0gf....................................."
## "ActivateDate"="2016-06"
## "block_devmode"="0"
## "check_enrollment"="0"
###
### Variables
###
APPLICATION="${0##*/}"
VPDMSG="Shows Vital Product Data (VPD) for Chrome OS device."
VPDOUT='/tmp/vpd.log'
XIT=0
###
### Start with current data
###
rm $VPDOUT 2>/dev/null || true
sudo dump_vpd_log --full --stdout > $VPDOUT || true
###
### Grab data for each attribute
###
mlb=$(echo "MLB Serial Number: $(cat $VPDOUT | grep '"mlb' | cut -d = -f 2 | sed 's/"//g')")
ppid=$(echo "PPID: $(cat $VPDOUT | grep '"ppid' | cut -d = -f 2 | sed 's/"//g')")
mod=$(echo "Model Name: $(cat $VPDOUT | grep '"mod' | cut -d = -f 2 | sed 's/"//g')")
seri=$(echo "Serial Number: $(cat $VPDOUT | grep '"seri' | cut -d = -f 2 | sed 's/"//g')")
serv=$(echo "Service Tag: $(cat $VPDOUT | grep '"serv' | cut -d = -f 2 | sed 's/"//g')")
loc=$(echo "Locale: $(cat $VPDOUT | grep 'locale' | cut -d = -f 2 | sed 's/"//g')")
tim=$(echo "Timezone: $(cat $VPDOUT | grep 'timezone' | cut -d = -f 2 | sed 's/"//g')")
key=$(echo "Keyboard Layout: $(cat $VPDOUT | grep '"key' | cut -d = -f 2 | sed 's/"//g')")
reg=$(echo "Region: $(cat $VPDOUT | grep 'region' | cut -d = -f 2 | sed 's/"//g')")
rlz=$(echo "RLZ Brand Code: $(cat $VPDOUT | grep 'region' | cut -d = -f 2 | sed 's/"//g')")
act=$(echo "Activate Date: $(cat $VPDOUT | grep '"Act' | cut -d = -f 2 | sed 's/"//g')")
dev=$(echo "Block Devmode: $(cat $VPDOUT | grep '"block' | cut -d = -f 2 | sed 's/"//g')")
enr=$(echo "Enterprise Enrolled: $(cat $VPDOUT | grep '"check' | cut -d = -f 2 | sed 's/"//g')")
all=$(env echo -e "$mod\n$seri\n$serv\n$loc\n$tim\n$key\n$reg\n$rlz\n$mlb\n$ppid\n$act\n$dev\n$enr")
###
### Check for links to 'cb'
###
case $APPLICATION in
cb|vpd) :;;
mlb*) echo "$mlb"; exit $XIT;;
ppid*) echo "$ppid"; exit $XIT;;
mod*) echo "$mod"; exit $XIT;;
seri*|sn) echo "$seri"; exit $XIT;;
serv*|tag) echo "$serv"; exit $XIT;;
loc*) echo "$loc"; exit $XIT;;
tim*|tz) echo "$tim"; exit $XIT;;
key*|kb) echo "$key"; exit $XIT;;
reg*) echo "$reg"; exit $XIT;;
rlz*) echo "$rlz"; exit $XIT;;
act*|ad) echo "$act"; exit $XIT;;
dev*|dm) echo "$dev"; exit $XIT;;
enr*) echo "$enr"; exit $XIT;;
esac
###
### Show all attributes
###
if [ -z "$1" ]; then
echo "$VPDMSG"
env echo -e "\n$all"
fi
###
### Check for command-line options
###
while [ "$#" -gt 0 ];
do
case "$1" in
mlb*) echo "$mlb";;
ppid*) echo "$ppid";;
mod*) echo "$mod";;
seri*|sn) echo "$seri";;
serv*|tag) echo "$serv";;
loc*) echo "$loc";;
tim*) echo "$tim";;
key*) echo "$key";;
reg*) echo "$reg";;
rlz*) echo "$rlz";;
act*) echo "$act";;
dev*|dm) echo "$dev";;
enr*) echo "$enr";;
all*) echo "$all";;
*) echo "$VPDMSG"
echo "Usage: cb [model|serial|service|locale|timezone|keyboard|region|rlz|mlb|ppid|activate|devmode|enrolled|all"
env echo -e "\n$all"
XIT=1 ;;
esac
shift
done
###
exit $XIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment