El siguiente script está escrito en Bash y su objetivo es obtener una lista completa en formato HTML de todas las distribuciones Linux/BSD registrados en Distrowatch con enlace directo al Sitio Oficial de la Distribución, así como también permite obtener todos los logos en formato PNG de todas las distribuciones encontradas.
#!/bin/bash <h1>distrolist.sh - Copyright (C) 2011 Beastieux Zeroo <the.beastieux@gmail.com></h1> <h1>This program is free software; you can redistribute it and/or</h1> <h1>modify it under the terms of the GNU General Public License</h1> <h1>as published by the Free Software Foundation; either version 2</h1> <h1>of the License, or (at your option) any later version.</h1> <h1>This program is distributed in the hope that it will be useful,</h1> <h1>but WITHOUT ANY WARRANTY; without even the implied warranty of</h1> <h1>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</h1> <h1>GNU General Public License for more details.</h1> <h1>You should have received a copy of the GNU General Public License</h1> <h1>along with this program; if not, write to the Free Software</h1> <h1>Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.</h1> DISTRO1='/tmp/LinuxTemp1' DISTRO2='/tmp/LinuxTemp2' DISTRO3='DistrowatchList' DISTRO4='/tmp/LinuxTemp4' DISTRO5='DistrowatchFile' ICO_DIR='ICONS' BAN=0 if [ -d $ICO_DIR ] ; then rm -rf $ICO_DIR mkdir $ICO_DIR else mkdir $ICO_DIR fi rm $DISTRO1 2> /dev/null rm $DISTRO2 2> /dev/null rm $DISTRO3 2> /dev/null rm $DISTRO4 2> /dev/null rm $DISTRO5 2> /dev/null function setRequirements { <pre><code>if [ -x /usr/bin/lynx ] ; then BAN=$[$BAN + 1] else echo &quot;*Necesitas instalar lynx&quot; fi if [ -x /usr/bin/wget ] ; then BAN=$[$BAN + 1] else echo &quot;*Necesitas instalar wget&quot; fi </code></pre> } function getWebFile { #OBTENER LA LISTA DE DISTROS DESDE DISTROWATCH lynx -dump "http://distrowatch.com/stats.php?section=popularity" > $DISTRO1 <pre><code>cat $DISTRO1 | grep '[=&gt;&lt;]' &gt; $DISTRO2 cat $DISTRO2 | tr '[=&gt;&lt;]' ']' | awk -F&quot;]&quot; '{print $3}' | rev | awk '{print $2,$3}' | rev | sort -n | uniq | sed 's/^ //g' &gt; $DISTRO3 </code></pre> } function setURLFile { #GENERAR FILE CON LAS URLS DE LA WEB DE CADA DISTRO <pre><code>lynx -dump &quot;http://distrowatch.com/stats.php?section=popularity" | sed 's/Last 6 months/Last 12 months/g' &gt; /tmp/LIST csplit /tmp/LIST '/Last 12 months/' '/Last 12 months/' &gt; /dev/null cat xx01 | grep '[=&gt;&lt;]' | awk '{print $2}' | grep -v '[:=]' &gt; $DISTRO4 #EL VALOR DE $DESDE - $HASTA SUELE VARIAR CON EL TIEMPO DESDE=`cat $DISTRO4|head -1 | sed 's/[/]/g' | awk -F']' '{print $2}'` HASTA=`cat $DISTRO4|tail -1 | sed 's/[/]/g' | awk -F']' '{print $2}'` i=$DESDE while [ $i -le $HASTA ] ; do URL=`cat $DISTRO1|awk '{print $1,$2}' | grep &quot;^$i.&quot;|awk '{print $2}'|awk -F't' '{print $1}'` HOMELINUX=`lynx -dump &quot;$URL&quot; | grep &quot; Home Page&quot;|awk -F']' '{print $2}'` #DOWNLOAD=`lynx -dump &quot;$URL&quot; | grep &quot;[33]&quot;|awk -F':' '{print $2}'` NOMBRE=`cat $DISTRO1|grep &quot;[$i]&quot;| awk -F&quot;]&quot; '{print $2}'|awk -F' ' '{print $1}'` ICONO=`echo http://distrowatch.com/images/xnwchcfnxz/$(echo $URL | awk -F'/' '{print $4}').png` echo &quot;$NOMBRE;$HOMELINUX;$ICONO&quot; &gt;&gt; $DISTRO5 i=$[$i+1] echo $[$i-$DESDE]:$NOMBRE done rm xx0* 2&gt; /dev/null rm /tmp/LIST 2&gt; /dev/null </code></pre> } function getIcons { #OBTENIENDO ICONOS DE CADA DISTRO <pre><code>cd $ICO_DIR for ico in $(cat ../$DISTRO5|awk -F';' '{print $3}') ; do wget $ico 2&gt; /dev/null echo -e .'c' done echo -e .'n' cd - </code></pre> } function setHTMLFile { #CREA UN FICHERO HTML CON LOS ENLACES A CADA DISTRO WEB=distros.html i=1 echo '<body bcolor="#ffffff">' > $WEB echo '<ol>' >> $WEB echo '<TABLE BORDER="0">' >> $WEB <pre><code>echo '&lt;TR&gt;' &gt;&gt; $WEB for f in $(cat $DISTRO5|sed 's/ /__/g'|sort) ; do URL=`echo $f|awk -F';' '{print $2}'` NOM=`echo $f|awk -F';' '{print $1}'|sed 's/__/ /g'` echo &quot;&lt;TD WIDTH=&quot;150&quot;&gt;&lt;li&gt;&lt;a href=&quot;$URL&quot; title=&quot;$NOM&quot; target=&quot;_blank&quot;&gt;$NOM&lt;/a&gt;&lt;/li&gt;&lt;/TD&gt;&quot; &gt;&gt; $WEB if [ $[$i % 4] -eq 0 ] ; then echo '&lt;/TR&gt;' &gt;&gt; $WEB echo '&lt;TR&gt;' &gt;&gt; $WEB fi i=$[$i+1] done echo '&lt;/TABLE&gt;' &gt;&gt; $WEB echo '&lt;/ol&gt;' &gt;&gt; $WEB echo '&lt;/body&gt;'&gt;&gt; $WEB </code></pre> } setRequirements; if [ $BAN -eq 2 ] ; then getWebFile setURLFile getIcons setHTMLFile fi
$chmod +x distrolist.sh
$./distrolist.sh
Al ejecutar el script obtendremos un fichero HTML con el listado completo y todos los logos en un directorio nuevo. Eres libre de realizar las modificaciones que creas conveniente sobre el código.