Skip to content

Instantly share code, notes, and snippets.

@adri72
Created September 29, 2013 13:58
Show Gist options
  • Save adri72/6752766 to your computer and use it in GitHub Desktop.
Save adri72/6752766 to your computer and use it in GitHub Desktop.
Download all the Windows 7 x64 drivers for the HP Envy 17 CTO-3000 laptop. This bash shell script will download all the drivers' files at once, saving hours of going around through the HP's drivers site, clicking links, saving files, etc. With minor adjustments can be used to download drivers for any other HP product.
#!/bin/sh
sDate=$(date +%m%d%Y)
sScriptName=`basename $0`
sScriptName=${sScriptName%.*}
sDownloadFolder=${sScriptName}_${sDate}
sDriversListingURL="http://h10025.www1.hp.com/ewfrf/wc/softwareCategory?os=4063&lc=en&cc=us&dlc=en&sw_lang=&product=5180698#N788"
sWgetParams="--random-wait --timeout=360 --no-check-certificate --directory-prefix=${sDownloadFolder} --limit-rate=500k --user-agent=Mozilla/5.0 "
if [ ! -d "$sDownloadFolder" ]; then mkdir ${sDownloadFolder}; fi
wget ${sWgetParams} --output-document=${sDownloadFolder}/${sScriptName}_page.html ${sDriversListingURL}
#read -p "Press any key to continue..."
grep -i 'ewfrf/wc/softwareDownloadIndex?softwareitem=' ${sDownloadFolder}/${sScriptName}_page.html | cut -d\" -f7 | grep -i -v 'top' | sed 's/^/http:\/\/h10025.www1.hp.com/' > ${sDownloadFolder}/${sScriptName}_pageurls.txt
#read -p "Press any key to continue..."
sLoopCount=1
while read line
do
#echo "$line"
#sleep 20
wget ${sWgetParams} --output-document=${sDownloadFolder}/${sScriptName}_pageurlcontents_${sLoopCount}.txt "${line}"
sDriverURL=`grep -i 'ftp.hp.com' ${sDownloadFolder}/${sScriptName}_pageurlcontents_${sLoopCount}.txt | cut -d\" -f3 | sort --uniq`
sDriverPageTitle=`awk -vRS="</title>" '/<title>/{gsub(/.*<title>|\n+/,"");print;exit}' ${sDownloadFolder}/${sScriptName}_pageurlcontents_${sLoopCount}.txt | cut -d\| -f1`
sDriverPageTitle=${sDriverPageTitle//,/_}
sDriverPageTitle=${sDriverPageTitle//:/_}
sDriverPageTitle=${sDriverPageTitle// /_}
#echo "${sDriverURL}"
#echo "${sDriverPageTitle}"
#sleep 20
sDriverFileName=`echo "${sDriverURL}" | cut -d\/ -f 7`
if [ -z "${sDriverFileName}" ]; then sDriverFileName="sp_undetermined_${sLoopCount}.exe"; fi
echo "${sDriverPageTitle}${sDriverFileName}"
#sleep 3
wget ${sWgetParams} --output-document="${sDownloadFolder}/${sDriverPageTitle}${sDriverFileName}" "${sDriverURL}"
#echo "wget ${sWgetParams} --output-document=\"${sDownloadFolder}/${sDriverPageTitle}${sDriverFileName}\" \"${sDriverURL}\"" >> ${sDownloadFolder}/wget_download_cmds.txt
sSecsToWait=$[ ( $RANDOM % 2 ) + 1 ]
echo "Waiting ${sSecsToWait} seconds..."
sleep ${sSecsToWait}
#rm ${sDownloadFolder}/${sScriptName}_pageurlcontents_${sLoopCount}.txt
let sLoopCount++
done < ${sDownloadFolder}/${sScriptName}_pageurls.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment