Usage: 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:
Works fine with iPad serials too.
Post a Comment