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