#!/bin/bash

# Skrypt checklinks podążający za wszystkimi wewnętrznymi
# odnośnikami na stronie i zapisującymi błędy w pliku "traverse.errors".

# Usunięcie po zakończeniu wykonywania skryptu wszystkich plików
# tworzonych przez polecenie lynx podczas sprawdzania odnośników.
trap "`which rm` -f traverse.dat traverse2.dat" 0

if [ -z "$1" ] ; then
  echo "Użycie: 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
  echo -n "Liczba błędnych odnośników: $(wc -l < traverse.errors). "
  echo Sprawdzonych stron w witrynie ${1}: $(grep '^http' traverse.dat | wc -l).
  sed "s|$1||g" < traverse.errors | sed "s|\tin|\tw|g"
  mv traverse.errors ${baseurl}.errors
  echo "(Powyższy wynik został zapisany w pliku ${baseurl}.errors)"
else
  echo -n "Nie znaleziono błędnych odnośników. ";
  echo Sprawdzonych stron w witrynie ${1}: $(grep '^http' traverse.dat | wc -l).
fi

if [ -s "reject.dat" ]; then
  mv reject.dat ${baseurl}.rejects
fi

exit 0
