Ich verwende den integrierten Spider-Modus von wget manchmal als Annehmlichkeit, um eine lokale Site schnell auf defekte Links zu überprüfen. Heute Morgen habe ich seine Aufmerksamkeit auf eine Produktionsstätte gelenkt, an der wir gerade große Änderungen vorgenommen haben, und die drei defekte Links enthält, aber es scheint unmöglich zu sagen, wo sie sich befinden! (Es wird nur angegeben, worauf sie verlinken, und es gibt keine einfache Möglichkeit, dies allein auf eine Seite zurückzuführen.)
Die Optionen, die ich derzeit verwende, sind wget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt
. Kennt jemand eine Option, die ich übersehen habe, eine Möglichkeit, die Ausgabe zu lesen, oder sogar einen einfachen Ersatz für diesen Befehl, der mir auch mitteilt, in welcher Datei die Links erscheinen (und im Idealfall eine Zeilennummer)?
Antworten:
Sie sollten in der Lage sein, die Webserver-Protokolle in Verbindung mit dem wget-Lauf zu überwachen. Suchen Sie nach den
404
's in der Protokolldatei und ziehen Sie dasreferrer
Feld. Das zeigt Ihnen die Seite, die den defekten Link enthält.Es sollte dann nur darum gehen, diese Seite auf den beleidigenden Link zu untersuchen.
quelle
Ein guter Weg (ohne die Webserver-Protokolle einzubeziehen) ist die Verwendung von
--debug
Flag und Grep für^Referer:
In der Befehlszeile:
Sie können ähnliche Protokolle in Ihrem Protokoll durchführen. Vorsichtsmaßnahme: Einige Wget werden nicht mit der Unterstützung für kompiliert
--debug
quelle
-i
überprüfen Sie dies mit dem Schalter.wget -r -nv --spider -i linkfile 2>&1 | egrep -A 1 '(^---response end---$|^--[0-9]{4}-[0-9]{2}-[0-9]{2}|^[0-9]{4}-[0-9]{2}-[0-9]{2} ERROR|^Referer:|^Remote file does not)'