Usage: ./check-url.sh "target csv"
cat <<_EOF > target.csv
# url,protocol{http/https/both},memo
example.com,both,TEST
sub.example.com,https
_EOF
| #!/bin/bash | |
| _CSV=${1} | |
| _LOGDIR="output" | |
| function USAGE() { | |
| cat <<_EOF | |
| Usage: ${0} "target csv" | |
| _EOF | |
| } | |
| if [ ! -f "${_CSV}" ]; then | |
| USAGE ; exit 1 | |
| fi | |
| cd $(cd $(dirname ${0}) && pwd) | |
| [ -d "${_LOGDIR}" ] || mkdir -p "${_LOGDIR}" | |
| _RUNDATE="$(date +'%Y%m%d_%H%M%S')" | |
| _LOG=${_LOGDIR}/$(basename ${0} .sh).$(basename ${_CSV} .csv).${_RUNDATE}.log | |
| _SUMMARY=${_LOGDIR}/$(basename ${0} .sh).$(basename ${_CSV} .csv).${_RUNDATE}.summary.log | |
| for i in $(grep -v -e '^#' -e '^$' "${_CSV}" | sed -e 's% %%g') | |
| do | |
| _URL=$(echo ${i} | awk -F ',' '{print $1}') | |
| _PROTOCOL=$(echo ${i} | awk -F ',' '{print $2}') | |
| _MEMO=$(echo ${i} | awk -F ',' '{print $3}') | |
| if [ -z "${_MEMO}" ]; then | |
| echo "# ${_URL}" | tee -a ${_LOG} | |
| else | |
| echo "# ${_URL} (${_MEMO})" | tee -a ${_LOG} | |
| fi | |
| case "${_PROTOCOL}" in | |
| "both" ) _PROTOCOLs=("http" "https") ;; | |
| "http"|"https" ) _PROTOCOLs="${_PROTOCOL}" ;; | |
| * ) | |
| unset _PROTOCOLs | |
| echo "Invalid value: ${_PROTOCOL}" | |
| ;; | |
| esac | |
| for j in ${_PROTOCOLs[@]} | |
| do | |
| echo "## ${j}" | tee -a ${_LOG} | |
| set -x | |
| ( | |
| curl -iLSsf -m 5 "${j}://${_URL}" | |
| ) 2>&1 | tee -a ${_LOG} | |
| set +x | |
| echo '' | tee -a ${_LOG} | |
| sleep 1 | |
| done | |
| done | |
| cat <<_EOF | |
| -------------------------------------------------------------------------------- | |
| Result Summay | |
| -------------------------------------------------------------------------------- | |
| $(grep -a -e '^#' -e '^curl' -e '^HTTP' "${_LOG}" | tee "${_SUMMARY}") | |
| -------------------------------------------------------------------------------- | |
| _EOF | |
| gzip "${_LOG}" | |
| cat <<_EOF | |
| Output File: | |
| $(ls -l ${_LOGDIR}/$(basename ${0} .sh).$(basename ${_CSV} .csv).${_RUNDATE}*) | |
| -------------------------------------------------------------------------------- | |
| _EOF | |
| exit |