Tout d'abord, disons que les scripts sont utilisés pour automatiser ou effectuer des tâches sans avoir à les répéter encore et encore, car dans le fichier de script lui-même, nous introduirons toutes les commandes nécessaires pour effectuer la tâche.
Pour créer le script, l'éditeur de texte Linux suffit.
• Créez un fichier texte dans le chemin où nous voulons avoir le script. • Enregistrez le fichier avec le nom que nous aimons le plus mais avec l'extension “.sh” • Afin d'être reconnu comme un script, nous devons écrire «#! / Bin / bash» comme première ligne (sans les guillemets).
Il ne nous reste plus qu'à écrire les commandes comme s'il s'agissait de la console, l'une après l'autre.
#!/bin/bash cd "/home/gabriel/Téléchargements/lorapipe-master/target/release/" sudo kissattach /dev/ptmx lora 192.168.3.20 sudo socat /dev/pts/3,rawer EXEC:'./lorapipe --initfile=init-fast.txt --debug --txslot 2000 --pack --maxpacketsize 200 --txwait 150 /dev/ttyUSB0 kiss,pty,rawer'
Pour tester son fonctionnement, nous l'exécutons dans le dossier où il a été créé en mettant:
./scriptinitlora.sh
Après son exécution au démarrage du PC, nous devons procéder comme suit:
Pour cela, nous avons besoin de:
• Que le script soit exécutable. Si ce n'est pas le cas, pour lui donner des autorisations, nous exécutons: sudo chmod 777 scriptinitlora.sh
• Ajoutez le script à rc.local: sudo nano /etc/rc.local avant de quitter 0. Il devrait ressembler à ceci.
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. sh /home/gabriel/scriptinitlora.sh exit 0
Pour tester que le script a démarré, nous exécutons:
root@mneme:/etc/init.d# systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; enabled-runtime; vendor preset: enabled)
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: activating (start) since Mon 2020-06-22 15:53:49 CEST; 1h 55min ago
Docs: man:systemd-rc-local-generator(8)
Cntrl PID: 14295 (rc.local)
Tasks: 9 (limit: 4538)
Memory: 4.2M
CGroup: /system.slice/rc-local.service
├─14295 /bin/sh -e /etc/rc.local start
├─14297 sh /home/gabriel/scriptinitlora.sh
├─14339 kissattach /dev/ptmx lora 192.168.3.20
├─14341 sudo socat /dev/pts/3,rawer EXEC:./lorapipe --initfile=init-fast.txt --debug --txslot 2000 --pack --maxpacketsize 200 --txwait 150 /de
├─14358 socat /dev/pts/3,rawer EXEC:./lorapipe --initfile=init-fast.txt --debug --txslot 2000 --pack --maxpacketsize 200 --txwait 150 /dev/tty
└─14364 ./lorapipe --initfile=init-fast.txt --debug --txslot 2000 --pack --maxpacketsize 200 --txwait 150 /dev/ttyUSB0 kiss
juin 22 17:46:14 mneme rc.local[14295]: 15:46:14 [TRACE] (3) lorapipe::ser: [src/ser.rs:72] "/dev/ttyUSB0" SEROUT: radio rx 0
juin 22 17:46:14 mneme rc.local[14295]: 15:46:14 [TRACE] (2) lorapipe::ser: [src/ser.rs:65] "/dev/ttyUSB0" SERIN: ok
juin 22 17:47:14 mneme rc.local[14295]: 15:47:14 [TRACE] (2) lorapipe::ser: [src/ser.rs:65] "/dev/ttyUSB0" SERIN: radio_err
juin 22 17:47:14 mneme rc.local[14295]: 15:47:14 [DEBUG] (3) lorapipe::lorastik: txdelayrequired: self.txdelay = None
juin 22 17:47:14 mneme rc.local[14295]: 15:47:14 [TRACE] (3) lorapipe::ser: [src/ser.rs:72] "/dev/ttyUSB0" SEROUT: radio rx 0
juin 22 17:47:14 mneme rc.local[14295]: 15:47:14 [TRACE] (2) lorapipe::ser: [src/ser.rs:65] "/dev/ttyUSB0" SERIN: ok
juin 22 17:48:14 mneme rc.local[14295]: 15:48:14 [TRACE] (2) lorapipe::ser: [src/ser.rs:65] "/dev/ttyUSB0" SERIN: radio_err
juin 22 17:48:14 mneme rc.local[14295]: 15:48:14 [DEBUG] (3) lorapipe::lorastik: txdelayrequired: self.txdelay = None
juin 22 17:48:14 mneme rc.local[14295]: 15:48:14 [TRACE] (3) lorapipe::ser: [src/ser.rs:72] "/dev/ttyUSB0" SEROUT: radio rx 0
juin 22 17:48:14 mneme rc.local[14295]: 15:48:14 [TRACE] (2) lorapipe::ser: [src/ser.rs:65] "/dev/ttyUSB0" SERIN: ok
Comme vous pouvez le voir, cela fonctionne sans problème