Thursday, October 6, 2011

Apple Warranty Info script

Made a quick bash-script to check warranty information for a specific serial number.

Usage: warrantyinfo.sh OR warrantyinfo.sh

If you do not specify a serial number as an argument, the script will use the serial number from the machine that it is run on.

UPDATE: Made it compatible with iPhones. I do not own an iPad and therefor no iPad serial number, so I haven't tested it with iPads.

#!/bin/bash

# Check warranty
# Usage: $0 serialnumber OR just $0

INFOF="/tmp/warranty.info"
INFOF2="/tmp/warranty_lines.info"

if [ -z "$1" ]; then
 echo "No serial number specified, assuming it's the local machine's serial"
 SN=$(system_profiler SPHardwareDataType | grep "Serial Number" | awk -F': ' '{print $2}')
else
 SN="$1"
fi

if [ -z "$SN" ]; then
 printf "No serial number specified and no serial number automatically found\n"
 printf "Exiting\n\n"
 exit 1
fi

# Get raw info
printf "Getting warranty info from Apple"
curl --silent https://selfsolve.apple.com/warrantyChecker.do?sn=$SN -o "$INFOF"

# Checking if it's an iPhone
IPHONESTAT=$(cat "$INFOF" | awk -F'IS_IPHONE' '{print $2}' | awk -F'"' '{print $3}')

if [ "$IPHONESTAT" = "Y" ]; then
 # This is an iPhone, check iPhone-specific data
 PRODUCT=$(cat "$INFOF" | awk -F'PROD_DESCR' '{print $2}' | awk -F'"' '{print $3}')
 PARTDESCR=$(cat "$INFOF" | awk -F'PART_DESCR' '{print $2}' | awk -F'"' '{print $3}')
 ICCID=$(cat "$INFOF" | awk -F'ICCID' '{print $2}' | awk -F'"' '{print $3}')
 REGISTERED=$(cat "$INFOF" | awk -F'IS_REGISTERED' '{print $2}' | awk -F'"' '{print $3}')
 ACTIVATED=$(cat "$INFOF" | awk -F'ACTIVATION_STATUS' '{print $2}' | awk -F'"' '{print $3}')
 IMEI=$(cat "$INFOF" | awk -F'AP_IMEI_NUM' '{print $2}' | awk -F'"' '{print $3}')
 WARRANTY=$(cat "$INFOF" | awk -F'HW_COVERAGE_DESC' '{print $2}' | awk -F'"' '{print $3}')
 CARRIER=$(cat "$INFOF" | awk -F'CARRIER' '{print $2}' | awk -F'"' '{print $3}')
 PURCHDATE=$(cat "$INFOF" | awk -F'PURCHASE_DATE' '{print $2}' | awk -F'"' '{print $3}')
 
 # Make it nicer
 if [ "$REGISTERED" = "Y" ]; then
  REGISTERED=Yes
 else
  REGISTERED=No
 fi
 
 if [ "$ACTIVATED" = "Y" ]; then
  ACTIVATED=Yes
 else
  ACTIVATED=No
 fi
 
 # Display data
 clear
 printf "\033[1mWarranty Information\033[m\n\n"
 printf "Product:\t\033[1m$PRODUCT\033[m\n"
 printf "Description:\t\033[1m$PARTDESCR\033[m\n"
 printf "Serial Number:\t\033[1m$SN\033[m\n"
 printf "ICCID:\t\t\033[1m$ICCID\033[m\n"
 printf "IMEI:\t\t\033[1m$IMEI\033[m\n"
 printf "Purchase Date:\t\033[1m$PURCHDATE\033[m\n"
 printf "Warranty:\t\033[1m$WARRANTY\033[m\n"
 printf "Registered:\t\033[1m$REGISTERED\033[m\n"
 printf "Activated:\t\033[1m$ACTIVATED\033[m\n"
 printf "Carrier:\t\033[1m$CARRIER\033[m\n\n\n"
else
 # This is a Mac, check Mac data
 # Get product description first as it may contain comma (,) 
 PRODUCT=$(cat "$INFOF" | awk -F'PROD_DESCR' '{print $2}' | awk -F'"' '{print $3}')
 DAYSREM=$(cat "$INFOF" | awk -F'DAYS_REM_IN_COV' '{print $2}' | awk -F'"' '{print $3}')
 PURCHDATE=$(cat "$INFOF" | awk -F'PURCHASE_DATE' '{print $2}' | awk -F'"' '{print $3}')
 ENDDATE=$(cat "$INFOF" | awk -F'COV_END_DATE' '{print $2}' | awk -F'"' '{print $3}')

 # Display data
 clear
 printf "\033[1mWarranty Information\033[m\n\n"
 printf "Product:\t\033[1m$PRODUCT\033[m\n"
 printf "Serial Number:\t\033[1m$SN\033[m\n"
 printf "Purchase Date:\t\033[1m$PURCHDATE\033[m\n"
 printf "End Date:\t\033[1m$ENDDATE\033[m\n"
 printf "Days remaining:\t\033[1m$DAYSREM\033[m\n"

 printf "\n\n"
fi

exit 0



1 comment:

Jonas J said...

Works fine with iPad serials too.