SyncHierachy

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.

Nicht definiert