fastix®: automatischer Download einer hosts-Datei (Werbeblocker)

Moin an alle Linuxer!

Ich habe hier mal ein Shellscript geschrieben, welches automatisch die hosts-Datei aus einer hosts.local (Mit eigenen Einstellungen) und der hosts.gz von http://banner.fastix.de erstellt.

Bevor ich die Datei zwecks Download auf den Server stelle möchte ich sie vorstellen und mal fragen, was denn die Community davon hält...

Die darin vorkommende Datei "/ect/hosts.local" soll Einstellungen enthalten, die für das lokale Netzwerk gültig sind oder nur in diesem Sinn machen.

#! /bin/sh
if test -e /tmp/hosts.gz; then
   rm /tmp/hosts.gz;
fi
echo -n "Lade Datei hosts.gz von banner.fastix.de";
wget http://banner.fastix.de/hosts.gz --output-document=/tmp/hosts.gz > /dev/null 2> /dev/null && echo "... fertig";
if [ ! -e /tmp/hosts.gz ]; then
  echo -e "\nFatal: host.gz konnte nicht geladen werden. Abbruch!";
  exit 1;
fi
if [ -e /etc/hosts.local ]; then
   echo -n "Erzeuge neue hosts-Datei aus vorhandener hosts.local und heruntergeladenen Daten.";
   cat /etc/hosts.local > /etc/hosts && gzip -dc /tmp/hosts.gz >> /etc/hosts &&  rm /tmp/hosts.gz && echo "... fertig";
else
   echo -n "/etc/hosts.local nicht vorhanden. Erzeuge neue hosts-Datei aus heruntergeladener Datei.";
   gzip -dc /tmp/hosts.gz >> hosts &&  rm /tmp/hosts.gz && echo "... fertig";
fi
chmod 644 /etc/hosts
zeilen=wc -l /etc/hosts | cut -d \  -f1;

echo "Fertig! Die neue Datei "/etc/hosts" hat $zeilen Zeilen.";
echo -e "\n";

Auf die folgenden Zeilen kann verzichtet werden, wenn das Skript automatisch gestartet wird.

read  -p 'Datei [e]ditieren, [a]nzeigen oder fertig? ' -n1 wastun;
if [ "$wastun" = "e" ]; then
   vi /etc/hosts;
else
   if [ "$wastun" = "a" ]; then
     less /etc/hosts;
  fi
fi
echo;
exit;

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
  1. Hallo fastix,

    if [ "$wastun" = "e" ]; then
       vi /etc/hosts;

    diese Zeile halte ich für "problematisch". vi ist sicherlich ein extrem fähiger Editor, aber alles andere als intuitiv bedienbar. Früher gab es doch eine Umgebungsvariable zum Aufruf des bevorzugten Editors. Wenn es die noch gibt, nutze bitte diese. Wenn nicht, nutze eine eigene :-)

    Klar, wer das Skript nutzt, kann diese Zeile anpassen. Dennoch würde ich dies am Anfang des Skriptes tun und nicht an dieser Stelle eine Anpassung vornehmen müssen. Mir reicht im Normalfall joe (/usr/bin/joe).

    Freundliche Grüße

    Vinzenz

    1. Moin!

      Hallo fastix,

      if [ "$wastun" = "e" ]; then
         vi /etc/hosts;

      diese Zeile halte ich für "problematisch". vi ist sicherlich ein extrem fähiger Editor, aber alles andere als intuitiv bedienbar. Früher gab es doch eine Umgebungsvariable zum Aufruf des bevorzugten Editors. Wenn es die noch gibt, nutze bitte diese. Wenn nicht, nutze eine eigene :-)

      Ok. kein Problem. Eine eigene Variable brauchts aber nicht :)

      if [ "$wastun" = "e" ]; then
        if [ -z $EDITOR ]; then
           if [ -x  /usr/bin/vim ]; then
             /usr/bin/vim /etc/hosts;
           else
             vi /etc/hosts;
           fi
        else
           $EDITOR /etc/hosts
        fi
      ...

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development