Bonjour,

Sur une distribution RedHat 4AS, j’ai installé le serveur de fax HylaFax (version 4.3.0) et MySQL (version 4.1.7).

Par défaut HylaFax ne permet pas de connexion directe à MySQL, pour y insérer les informations comme les fax envoyés ou les fax reçus.

Pour HylaFax

La visualisation des fax envoyé se fait par la commande :
La visualisation des fax reçus se fait par la commande :
Format de retour:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
HylaFAX scheduler on serveur_fax: Running
ttyS1   53      Running and idle        *
ttyS0   55      Waiting for modem to come ready
 
JID  S           Owner Number          Pages Dials Prior     TTS Status
21   D            root 53               1:1   1:12   127
31   D            root 53               1:1   1:12   127
35   D            root 53               1:1   1:12   127
Pour insérer le résultat de ces commandes dans ma base de données MySQL, j’ai écris un script shell qui insert le résultat de la commande dans un fichier texte, puis qui importe le contenu de ce fichier texte dans ma base de donnée (script exécuté en tant que root, mais la commande faxstat -r et lancé par l’utilisateur srvfax)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
# insertion dans mysql des informations de faxstat -r
su srvfax -c 'faxstat -r > phpfax_recvq'
mysqlimport -d -L --fields-optionally-enclosed-by='"' --ignore-lines=5 phpfax phpfax_recvq
(Idem pour les autres commandes)

Manuellement, tout fonctionne correctement.

Dans un premier temps, je souhaiterais automatiser l’exécution de se script. C'est-à-dire qu’il se lance au démarrage du serveur (à la manière d’un service) et qu’il s’exécute toutes 10 secondes, pour contrôler l’arrivée ou l’envoi de fax et les insérer dans la BDD.

J’ai d’abord pensé à créer une boucle infini avec un sleep, le problème c’est que même lancé en arrière plan, le script bouffe toute mes ressources (pourtant il fait pas grand-chose !!!) et ça ne me semble pas très propre comme méthode !!!

Ensuite j’ai pensé au cron, mais, si je ne me trompe pas, cron ne permet d’exécuter un script qu’au minimum toutes les minutes.

Quelle solution me conseillez vous ?



Je cherche également à rendre ce script plus propre, plus professionnel … J’utilise par exemple autant de fichier texte (fichiers tampons) que de commandes de fax

Ex :
une commande pour la visu des fax envoyés == un fichier texte
une commande pour la visu des fax reçus == un fichier texte
Pour le moment ces fichiers ne font que quelques kilos, mais dans quelques temps plus il y aura de fax reçus ou envoyés plus ces fichiers seront gros.

J’ai donc pensé passer par un fichier « FIFO nommé » que j’ai créé avec les commandes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
mkfifo FIFO.hylafax.mysql
chmod 666 FIFO.hylafax.mysql
Quand j’essaie d’insérer le résultat de ma commande faxstat –r dans le fichier FIFO

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Faxstat -r > FIFO.hylafax.mysql
Le shell ne me rend pas la main !!

D’où vient mon erreur ?



En résumer comment puis je lancer ce script au démarrage (Il faut créer un script dans /etc/rc.d/init.d me semble-t-il) qu’il s’exécute toutes les 10 secondes (en tenant compte du cas où MySQL ou le serveur de fax s’arrêteraient) et éviter de passer par des fichiers textes « tampons »

D’avance merci pour votre aide et vos conseils

Fred

PS: Désolé si le titre n'est pas trés explicite