Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1738 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script bash. Lancement d'un sous-script?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script bash. Lancement d'un sous-script?

n°1486399
fredo3
Posté le 13-09-2023 à 11:21:37  profilanswer
 

Bonjour

 

J'ai un problème étrange au niveau d'un script et je ne trouve pas de solution.

 

Je vous explique.

 

J'utilise gammu, un programme qui permet la réception et émission de sms via un module 4G.
On peut paramétrer gammu de la sorte qu'il lance un script bash, à la réception d'un sms.
Bref, tout ca fonctionne très bien.

 

Sauf que.
Dans ce script, il y a une ligne qui ordonne l'envoi d'un sms, suivi de quelque echo et logs, mais surtout d'une boucle qui ne fait qu'un ping par seconde, et qui est limité à quelque minutes.

 

Le problème?
Et bien c'est que tant que la boucle ping, respectivement ce script ne se termine pas, gammu n’envoie pas l'sms dont j'ai portant donné l'ordre bien plus tôt.
Pourtant le dit sms se trouve bien dans la boîte d'envoi de gammu (sous forme de fichier). Il ne semble pas l'envoyer tant que le script n'est pas terminé on dirait.
(Oui c'est bien la boucle ping qui en est la cause et pas autre chose dans le script)

 

Ce qui est étrange c'est que les solutions que j'ai essayées... ne fonctionnent pas  :heink:

 

1. J'ai mis le code de la boucle ping, dans un fichier bash séparé et je le lance en background (&), permettant ainsi au script principal de continuer (et de terminer).
-> Ca ne marche pas.

 

2. J'ai alors utilisé la commande nohup monscript.sh &
-> Ca ne marche pas non plus

 

Bref je suis à court d'idée là  :(

 

Comment je peux lancer le sous-script avec la boucle ping, d'une manière totalement autonome, non-blocante pour le script principal???

 

:jap:

 

edit:
Tiens je vais essayer de passer ce sous-script ping en tant que service, service que je pourrais activer ou désactiver :D
Gammu n'y verra que du feu :o


Message édité par fredo3 le 13-09-2023 à 11:32:35
mood
Publicité
Posté le 13-09-2023 à 11:21:37  profilanswer
 

n°1486400
rat de com​bat
attention rongeur méchant!
Posté le 13-09-2023 à 12:39:12  profilanswer
 

Au pif: Soucis de plomberie, autrement dit le logiciel qui attend la fermeture d'un "pipe" pour envoyer le SMS? Ou alors qui attend la fermeture de son stdin ou similaire? A creuser éventuellement...


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°1486401
kajoux
Posté le 13-09-2023 à 14:12:40  profilanswer
 

Tu pourrais montrer un peu ton script ?

n°1486407
rat de com​bat
attention rongeur méchant!
Posté le 13-09-2023 à 15:49:01  profilanswer
 

J'ai regardé un peu le code de ce machin (version Debian 12: https://packages.debian.org/source/bookworm/gammu )
 
La fonction qui semble poser soucis n'est pas bien longue, c'est SMSD_RunOn() (la variante POSIX!) dans core.c::1180.
 
Je ne suis pas du tout expert pour l'API POSIX, mais si je vois bien le logiciel fork()e et attend que le script lancé dans le processus enfant se termine. Par contre il y a un timeout de 2 min et pas mal de sorties log, tu as regardé le fichier correspondant (en lanceant le machin avec  --verbose ou similaire si nécessaire)?
 
Perso je tenterais - à tes risques et périls et c'est HB :o - d'envoyer SIGPIPE au processus, juste au pif...
 
Au pire on peut toujours patcher le code et recompiler... :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°1486449
fredo3
Posté le 14-09-2023 à 12:07:49  profilanswer
 

J'ai trouvé une feinte, un vrai HB :D

 

Le script du ping, je le lance... via une tache cron :D

 

Mon script principale va juste modifier quand le cron devra se lancer, bref une manière de l'activer ou de le désactiver :D

 

Bon, c'est juste dommage que sur l'Edgerouter l'intervalle de temps minimal paramétrable c'est 1 minute, pas moyen de descendre plus bas, mais c'est déjà très bien.


Message édité par fredo3 le 14-09-2023 à 12:22:37

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script bash. Lancement d'un sous-script?

 

Sujets relatifs
Désinstallation Agent de sauvegarde Netvault BakboneBash incrementation d'une variable avec un autre
[BASH] remplacer des adresses par le contenu des fichiersNagios - Problème de lancement
lancer un webserver via crontab ou scriptSubstitution de variable lors d'exécution de script shell à distance
Récupérer les adresse IP avec un script BashAppeler une liste pour envoi SMS par script
[Bash] Passer un argument dans l'execution d'une commande à distance 
Plus de sujets relatifs à : Script bash. Lancement d'un sous-script?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR