| #!/bin/bash - |
| |
| PROJECT=$1 |
| echo "Verifying url links of: ${PROJECT}" |
| if [ ! -d "$PROJECT" ] |
| then |
| echo "Directory passed does not exist" |
| exit 2 |
| fi |
| |
| USER_AGENT="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36" |
| SCRIPT_RET=0 |
| |
| set -o nounset # Treat unset variables as an error |
| |
| declare -A dict |
| |
| function test { |
| while IFS= read -r LINE; do |
| FILE=$(echo $LINE | cut -f 1 -d ':') |
| URL=$(echo $LINE | grep -IoE '\b(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]') |
| |
| # remove trailing / if it exists curl diferenciate between links with |
| # and without / at the end |
| # URL=`echo "$URL" | sed 's,/$,,'` |
| dict+=(["$URL"]="$FILE ") |
| done < <(grep -e 'https\?://' ${PROJECT} -RIa --exclude='*.exe' --exclude-dir=.git | tr '*' ' ') |
| |
| for UNIQ_URL in ${!dict[@]} # loop urls |
| do |
| CURL_RES=$(curl -si --user-agent "${USER_AGENT}" ${UNIQ_URL} 2>/dev/null| head -n 1 | cut -f 2 -d ' ') |
| RES=$? |
| |
| echo "=================================" |
| echo "Checking URL: ${UNIQ_URL}" |
| |
| if [ "${CURL_RES}" == '' -o "${CURL_RES}" != '200' ] |
| then |
| if [ "${CURL_RES}" == '' ] # curl returned an error |
| then |
| CURL_RES=$RES |
| SCRIPT_RET=1 |
| echo ERROR: Result is: "${CURL_RES}" |
| elif [ "${CURL_RES}" == '403' ] |
| then |
| SCRIPT_RET=1 |
| echo ERROR: Result is: "${CURL_RES}" |
| else |
| echo WARNING: Result is: "${CURL_RES}" |
| fi |
| else |
| echo SUCCESS: Result is: "${CURL_RES}" |
| fi |
| echo "=================================" |
| done |
| |
| if [ "${SCRIPT_RET}" -eq 0 ] |
| then |
| exit 0 |
| else |
| exit 1 |
| fi |
| } |
| |
| test |