Un script admohblink

Ou comment faire pour faire ré-apparaître votre port DMO (ou DUP) dans le menu déroulant d’une distribution Pi-Star ?

Contexte

Vous avez connecté votre hotspot sur un serveur HBLink et le sysop vous a attribué un port (udp) sur ce serveur et vous n’arrivez pas à le trouver dans le menu déroulant « DMR Master » de votre hotspot. C’est normal !
Une fois un port attribué à un indicatif, il disparaît de cette liste. Alors comment faire pour vous connecter sur votre port (et pas celui du voisin)… ?

Solution

Par l’exécution de ce script, vous allez retrouver votre port personnel dans le menu déroulant de votre hotspot.

Comment procéder ?

Installation :

Il suffit de copier ce script dans le répertoire home du user pi-star via votre éditeur préféré. Le mien étant ‘vi’ (l’éditeur unix/linux ancestral), lancer les commandes suivantes :

- rpi-rw (pour basculer la partition en lecture-écriture)
- vi admohblink (appuyer sur la lettre i pour passer en insertion)
- coller le script précédemment sélectionné
- ensuite appuyer sur 'Escape' puis faites « :wq » (double-point w q) pour sauvegarder et quitter ‘vi’

Si tout s’est bien passé, vous devriez avoir ceci :

pi-star@jumbobgo(rw):~$ ls -l admohblink
-rw-r--r-- 1 pi-star pi-star 1525 Nov 3 10:21 admohblink

Il faut maintenant rendre le script exécutable par la commande : chmod u+x admohblink

pi-star@jumbobgo(rw):~$ chmod u+x admohblink
pi-star@jumbobgo(rw):~$ ls -l admohblink
-rwxr--r-- 1 pi-star pi-star 1525 Nov 3 10:21 admohblink

Exécution :

Le script nécessite de lui passer 3 arguments : le nom du port, le mot de passe du serveur, le numéro de port udp qui vous a été attribué. Sans arguments, le script affiche l’usage et s’arrête.

pi-star@jumbobgo(rw):~$ ./admohblink
USAGE : ./admohblink <DUPxx|DMOxx> <PASSWORD> <Port>

Par défaut, le script donne son résultat sur l’écran. Comme toute commande sous unix/linux, il suffit de rediriger la sortie du script dans un fichier, pour obtenir un nouveau fichier DMR_Hosts.
Le script va recopier le contenu du fichier DMR_Hosts.txt et y ajouter une ligne avec vos paramètres à la fin de la section des ports belges (au besoin et si la demande est là, une version plus évoluée sera développée pour les autres pays).

pi-star@jumbobgo(rw):~$ ./admohblink DMO66 PASSWORD 55566 > newdmrhost
pi-star@jumbobgo(rw):~$ ls -l newdmrhost
-rw-r--r-- 1 pi-star pi-star 57635 Nov 3 10:45 newdmrhost
pi-star@jumbobgo(rw):~$ grep -i belgique newdmrhost
HB_FR_BELGIQUE_DMO55     0000   51.75.249.214     PASSWORD   55555
HB_FR_BELGIQUE_DMO56     0000   51.75.249.214     PASSWORD   55556
HB_FR_BELGIQUE_DMO64     0000   51.75.249.214     PASSWORD   55564
HB_FR_BELGIQUE_DMO68     0000   51.75.249.214     PASSWORD   55568
HB_FR_BELGIQUE_DMO66     0000   51.75.249.214     PASSWORD   55566

Le script a recréé un fichier contenant bien une ligne DMO66 comme passé en paramètre. Elle sera dès lors présente dans le menu déroulant.
Il suffit donc de mettre ce nouveau fichier ‘newdmrhost’ avec le bon nom à la bonne place, en faisant une copie de backup par sécurité.

pi-star@jumbobgo(rw):~$ sudo cp /usr/local/etc/DMR_Hosts.txt /usr/local/etc/DMR_Hosts.txt_bak
pi-star@jumbobgo(rw):~$
pi-star@jumbobgo(rw):~$ ls -l /usr/local/etc/DMR_Ho*
-rw-r--r-- 1 root bin 57630 Nov 3 03:25 /usr/local/etc/DMR_Hosts.txt
-rw-r--r-- 1 root bin 57463 Nov 3 03:25 /usr/local/etc/DMR_Hosts.txt.20201103
-rw-r--r-- 1 root bin 57630 Nov 3 10:54 /usr/local/etc/DMR_Hosts.txt_bak

 

pi-star@jumbobgo(rw):~$ sudo cp newdmrhost /usr/local/etc/DMR_Hosts.txt
pi-star@jumbobgo(rw):~$ ls -l /usr/local/etc/DMR_Ho*
-rw-r--r-- 1 root bin 57635 Nov 3 10:55 /usr/local/etc/DMR_Hosts.txt
-rw-r--r-- 1 root bin 57463 Nov 3 03:25 /usr/local/etc/DMR_Hosts.txt.20201103
-rw-r--r-- 1 root bin 57630 Nov 3 10:54 /usr/local/etc/DMR_Hosts.txt_bak

Connectez-vous sur votre hotspot, sur la page Configuration, et vous devriez avoir votre port dans le menu déroulant DMR Master. Si pas, retournez sur le Dashboard puis revenez sur la page Configuration.

Voici le script :

Par sécurité, le script s’arrête si la ligne du port existe déjà ou si le fichier DMR_Hosts.txt n’existe pas. Il est tout à fait possible de le ‘crontabiliser’ moyennant un petit sur-script...


#!/bin/bash
#
# This script add a HBLink DMO/DUP port in the DMR_Hosts.txt file of Pi-star distribution only
# for HB_FR_BELGIQUE server.
# It may be placed in crontab with redirection to dev/null to avoid getting mail from crontab process
# 73, Benjamin - ON5BGO - Ver 1.0 - 01.11.2020
#
# Sample line:
# HB_FR_BELGIQUE_DMO68             0000     51.75.249.21   PASSWORD   55568
#
###########################################################################################################

DMRHOST=/usr/local/etc/DMR_Hosts.txt

if [ ! -e "$DMRHOST" ]; then

   echo "DMR host file doesn't exist ! Endind..."

   exit

fi

if [ $# -lt 3 ]; then

   echo "USAGE : $0 <DUPxx|DMOxx> <PASSWORD> <Port>"

else

   NEWPORT=$1

   PASSW=$2

   UDPPORT=$3

 zz=$(grep HB_FR_BELGIQUE $DMRHOST | grep $NEWPORT)

 if [ -n "$zz" ]; then

       echo

       echo "The port DMO/DUP already exists. No more action. Bye..."

       echo

       exit

   fi

awk -v newport=$NEWPORT -v passw=$PASSW -v udpport=$UDPPORT '

BEGIN { ctrBE=0; ctrOT=0 }

$1 ~ /HB_FR_BELGIQUE/

{

      delete hb_array;

      split($1, hb_array,"_");

      hb_array[4]=newport;

      newlinedmo=hb_array[1]"_"hb_array[2]"_"hb_array[3]"_"hb_array[4]"\t\t"$2"\t"$3"\t\t\t"passw"\t"udpport;

      print $0;

      ctrBE=ctrBE+1;

      ctrOT=0;

   }

   $1 !~ /HB_FR_BELGIQUE/ && ctrBE==0 {

      print $0;

      ctrOT=ctrOT+1;

   }

   $1 !~ /HB_FR_BELGIQUE/ && ctrOT==0 && ctrBE > 0 {

      print newlinedmo;

      ctrOT=ctrOT+1;

      ctrBE=0;

   }

   ' $DMRHOST

fi

Fichier script : admohblink.sh
admohblink.sh

Au plaisir, n’hésitez pas à me contacter pour tous renseignement, critiques ou suggestions.

73, Benjamin – ON5BGO

Index