📜  用于遍历所有内部 URL 并报告“traverse.errors”文件中的任何错误的 Shell 脚本

📅  最后修改于: 2022-05-13 01:56:17.854000             🧑  作者: Mango

用于遍历所有内部 URL 并报告“traverse.errors”文件中的任何错误的 Shell 脚本

如果您使用 Web 服务器或负责网站,无论是简单的还是复杂的,您可能会发现自己频繁地执行某些任务,显着识别损坏的内部和外部站点链接。使用 shell 脚本,您可以创建许多此类任务,以及其他正常的客户端/服务器功能,例如管理对受密码保护的网站索引的访问信息。下面的 Shell 脚本用于遍历给定网站上的所有内部 URL,在“traverse.errors”文件中报告错误(如果有)。

用法: traverse.sh

lynx="/usr/local/bin/lynx"

trap "$(which rm) -f traverse.dat traverse2.dat" 0
if [ -z "$1" ] ; then
  echo "Usage: checklinks URL" >&2
  exit 1
fi
baseurl="$(echo $1 | cut -d/ -f3 | sed 's/http:\/\///')"
lynx -traversal -accept_all_cookies -realm "$1" > /dev/null
if [ -s "traverse.errors" ] ; then
  /bin/echo -n $(wc -l < traverse.errors) errors encountered.
  echo Checked $(grep '^http' traverse.dat | wc -l) pages at ${1}:
  sed "s|$1||g" < traverse.errors
  mv traverse.errors ${baseurl}.errors
  echo "A copy of this output has been saved in ${baseurl}.errors"
else
  /bin/echo -n "No errors encountered. ";
  echo Checked $(grep '^http' traverse.dat | wc -l) pages at ${1}
fi
if [ -s "reject.dat" ]; then
  mv reject.dat ${baseurl}.rejects
fi
exit 0

场景 1:没有错误

图 1.2 – 无错误

场景 2:一些错误

图 1.3 遇到的 5 个错误