Sitemap generator in bash con wget
In un thread del forum GT, robyweb lancia l’idea di un sitemap generatore da utilizzare da shell con l’ausilio di wget ed un pochino di bash. Però a me l’idea di dover scaricare tutte le pagine non piace proprio, così come non mi piace l’operazione divisa in due fasi, quando con qualche riga in più posso fare tutto direttamente con uno script, a vantaggio della comodità di utilizzo. Avrei voluto utilizzare opzioni diverse, ma per ora la cosa non è fattibile e nel mio post sul topic spiego perchè, insieme a quel poco di configurazione che lo script necessita.
Eccolo qui:
#!/bin/bash
#Varibili modificabili dall'utente
url="http://www.ilmiosito.it/"
data="2006-12-31"
freq="daily"
prio="0.5"
#Da qui non andrebbe modificato niente
lista=`wget -erobots=off -m --delete-after $url --reject .jpg,.css 2>&1 |grep $url |awk '{print $2 " "}'`
IFS=" "
array=($lista)
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> sitemap.xml;
for ((i=0;i<${#array[*]};i++)); do
echo "<url>
<loc>${array[$i]:1}</loc>
<lastmod>$data</lastmod>
<changefreq>$freq</changefreq>
<priority>$prio</priority>
</url>" >> sitemap.xml
done
echo "</urlset>" >> sitemap.xml
rmdir ${url#http://}
exit 0
Però mi sono accorto che ha un buggettino:
il primo indirizzo in sitemap viene inserito così:
<loc>tpp://www.miosito.it</loc>
Questo è dovuto a
<loc>${array[$i]:1}</loc>
ed in particolare al :1, che però è necessario affinchè tutti gli altri invece siano inseriti correttamente.
Siccome sono pigro ed ora non mi va di giocare ancora con awk ed eventualmente con sed, lascio a voi la risoluzione della cosa; oppure ve lo prendete così com’è ed inserite la prima acca a mano a sitemap generata :P

No Comments, Comment or Ping
Reply to “Sitemap generator in bash con wget”