#!/bin/sh # # Get package status via www.fedex.com # # # Given a package tracking number request its status and pretty print # information about it. # package_status() { tracking_number=$1 params='data={"TrackPackagesRequest":{"appType":"WTRK",' params=${params}'"appDeviceType":"DESKTOP","supportHTML":false,' params=${params}'"supportCurrentLocation":true,"uniqueKey":"",' params=${params}'"processingParameters":{},"trackingInfoList":' params=${params}'[{"trackNumberInfo":{"trackingNumber":' params=${params}"\"${tracking_number}\"," params=${params}'"trackingQualifier":"","trackingCarrier":""}}]}}' params=${params}'&action=trackpackages&locale=en_US&version=1' params=${params}'&format=json' curl -d "${params}" -gs "https://www.fedex.com/trackingCal/track" | jq -r ' .TrackPackagesResponse.packageList[] | .scanEventList | reverse | .[] | .date + " " + .time + " " + .gmtOffset + "\n" + (if .scanLocation != "" then .scanLocation + " - " else "" end) + .status + "\n" ' } if [ $# -lt 1 ]; then echo "usage: $(basename $0) tracking_number ..." exit 1 fi for t in "$@"; do package_status "$1" done