SyncHierarchie

Aus OpenNewsNetwork

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Verbergen


Hierarchien syncronisieren

Diese Seite erklärt die notwendigen Schritte, um von einem vorhandenen Newsserver mittels Checkgroups eine Kopie der vorhandenen Gruppen zu erstellen.

   * actsync bzw. actsynd
   * Für de.*: die Checkgroups einspielen. Dazu bietet sich folgendes an: 
su news
cd /tmp
wget http://www.dana.de/mod/checkgroups.txt
/usr/lib/news/docheckgroups < /tmp/checkgroups.txt > /tmp/new.sh
bash /tmp/new.sh

Pfade anpassen ist natürlich selbstverständlich. Wer, wie ich, die Ausführung für wget aus Sicherheitsgründen nur für root freigegeben hat, muss das Holen der checkgroups.txt Datei vor das su news legen.

Anmerkung: In einem öffentlichen Verzeichnis wie /tmp Dateien mit vorhersagbaren Namen anzulegen, ist ein Sicherheitsproblem.

Variante 1

Eine andere Version als Skript die zum Beispiel durch cron ausgeführt werden könnte:

#!/bin/bash
cd /tmp
wget http://www.dana.de/mod/checkgroups.txt
echo "/usr/lib/news/bin/ctlinnd throttle maintenance" > /tmp/new.sh
/usr/lib/news/bin/docheckgroups < /tmp/checkgroups.txt >> /tmp/new.sh
rm /tmp/checkgroups.txt
bash /tmp/new.sh
rm /tmp/new.sh
/usr/lib/news/bin/ctlinnd go maintenance

Variante 2

Dieser Variante kommt mit allen Hierarchien der Kategorie "Reine Gruppenliste" und "Posting der Gruppenliste" zurecht (siehe Checkgrouplinks). Die Kopfzeilen werden automatisch abgeschnitten, falls vorhanden.

Aufgerufen wird das Skript mit einer Liste von URLs oder Dateinamen, diese werden der Reihe nach abgearbeitet. Beginnt ein Kommandozeilenargument mit "http:" wird es mit wget heruntergeladen, ansonsten als Datei eingelesen.

#!/bin/bash
CHECK=/usr/lib/news/bin/docheckgroups
CTLINND=/usr/lib/news/bin/ctlinnd
 
echo "$CTLINND throttle checkgroups"
for i in "$@"; do
  if [ "${i#http://}" = "$i" ]; then
    cat "$i"
  else
    wget -q -O- "$i"
  fi |
  awk 'FNR==1&&/^[A-Za-z]+[: ]/{f=-1} /^[[:space:]]*$/{f++} {if(!f)print$0}'
done | $CHECK | sed '/^exit\>/d'
echo "$CTLINND go checkgroups"

Angenommen, das Skript wird mit dem Dateinamen check abgespeichert, dann wird es in etwa so ausgeführt:

   sh check http://www.usenet.dk/dk-admin/newsgroups http://www.usenet.at/checkgroups/checkgroups-latest | sh

Oder auch so:

wget http://www.usenet.dk/dk-admin/newsgroups
wget http://www.usenet.at/checkgroups/checkgroups-latest
sh check newsgroups checkgroups-latest | sh

Wenn man das abschließende " | sh" durch " | less" ersetzt, kann man sich die resultierenden Aktionen vorher einmal ganz unverbindlich ansehen.

Persönliche Werkzeuge