Aggiornare in automatico i file DExtra, DPlus e DCS_Hosts.txt dal database XLX

di | 21/11/2016

Gli script (per Linux) sotto riportati, prelevati dalla rete, permettono l’aggiornamento in automatico dei file DExtra_Hosts.txt, DPlus e DCS dal database che gestisce l’elenco dei reflector XLX che si autoregistrano. Il contenuto dei file NON viene cancellato ma sono aggiunti i record mancanti. Per un aggiornamento completo ripulire a mano i file affinché il processo, trovandoli vuoti, provveda a ripopolarli. Di seguito i comandi:

copiare i file interessati nella cartella temporanea del nostro hotspot/ripetitore prelevandoli dalla cartella /usr/local/etc

$ sudo -s

# cd /tmp

prestare attenzione al “.” al termine del comando (c’è uno spazio)

# cp /usr/local/etc/DExtra_Hosts.txt .

# cp /usr/local/etc/DPlus_Hosts.txt .

# cp /usr/local/etc/DCS_Hosts.txt .

nel caso volessimo avere i file vuoti possiamo evitare di ricopiare gli originali, bensì creare i nuovi con il comando “touch

Creare il primo script

# nano main.sh

e copiarvici il seguente contenuto:

#!/bin/bash

cd /tmp
wget -O /tmp/xlx_Hosts.txt http://xlxapi.rlx.lu/api.php?do=GetReflectorHostname # get self registered XLX hosts.

XLXFILE=/tmp/xlx_Hosts.txt

echo “Merging XLX DPlus reflectors with master list…”
export HOSTFILE=/tmp/DPlus_Hosts.txt
export REFTYPE=”REF”
cat $XLXFILE | xargs -r -l1 /usr/local/bin/checkref

echo “Merging  XLX DExtra reflectors with master list…”
export HOSTFILE=/tmp/DExtra_Hosts.txt
export REFTYPE=”XRF”
cat $XLXFILE | xargs -r -l1 /usr/local/bin/checkref

echo “Merging XLX DCS reflectors with master list…”
export HOSTFILE=/tmp/DCS_Hosts.txt
export REFTYPE=”DCS”
cat $XLXFILE | xargs -r -l1 /usr/local/bin/checkref

rendere eseguibile il file creato

# chmod 755 main.sh

creare il secondo script con il comando

# nano /usr/local/bin/checkref

e copiarvici il contenuto:

#!/bin/bash

REF=”$1″
TEST=`echo $REF | grep ^#`
if ! [ “$TEST” = “” ]; then
  exit 0
fi
TEST=`echo $REF | grep $REFTYPE`

#echo -n “$REF, $TEST, “
if [ “$TEST” = “” ]; then
  CHECK=””
  exit 0
else
  REF=”^$REF”
  CHECK=`cat $HOSTFILE | grep $REF`
fi

if ! [ “$CHECK” = “” ]; then
  echo “Skipping duplicate entry $1”
#  echo -n “$CHECK, “
  exit 0
fi

echo “$@”
echo -e “$1\t$2” >> $HOSTFILE

rendere quindi eseguibile questo secondo script

# chmod 755 /usr/local/bin/checkref

ed eseguire il processo avviando il primo script

# sh /tmp/main.sh

si avrà un output simile a questo:

–2016-04-16 20:28:32– http://xlxapi.rlx.lu/api.php?do=GetReflectorHostname
Resolving xlxapi.rlx.lu (xlxapi.rlx.lu)… 193.168.82.26
Connecting to xlxapi.rlx.lu (xlxapi.rlx.lu)|193.168.82.26|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 4516 (4.4K) [text/plain]
Saving to: `/tmp/xlx_Hosts.txt’

100%[=================================================================================================================================>] 4,516 –.-K/s in 0s

2016-04-16 20:28:32 (32.1 MB/s) – `/tmp/xlx_Hosts.txt’ saved [4516/4516]

Merging XLX DPlus reflectors with master list…

che indentifica il corretto procedere nell’aggiornamento dei dati, attendere quindi il completamento della lavorazione. Alla fine i file risulteranno aggiornati e potremo ricopiarli nella loro posizione corretta dando i seguenti comandi (prima procedo con una copia del file originale rinominandolo .OLD):

# mv /usr/local/etc/DExtra_Hosts.txt /usr/local/etc/DExtra_Hosts.OLD

# cp /tmp/DExtra_Hosts.txt /usr/local/etc/DExtra_Hosts.txt

# mv /usr/local/etc/DPlus_Hosts.txt /usr/local/etc/DPlus_Hosts.OLD

# cp /tmp/DPlus_Hosts.txt /usr/local/etc/DPlus_Hosts.txt

# mv /usr/local/etc/DCS_Hosts.txt /usr/local/etc/DCS_Hosts.OLD

# cp /tmp/DCS_Hosts.txt /usr/local/etc/DCS_Hosts.txt

Si può creare facilmente un automatismo, magari utilizzando CRON per programmare l’aggiornamento una volta alla settimana.