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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part faxstat d
Format de retour:
Code : Sélectionner tout - Visualiser dans une fenêtre à part faxsat r
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
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
(Idem pour les autres commandes)
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
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
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.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
J’ai donc pensé passer par un fichier « FIFO nommé » que j’ai créé avec les commandes :
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
1
2 mkfifo FIFO.hylafax.mysql chmod 666 FIFO.hylafax.mysql
Le shell ne me rend pas la main !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part Faxstat -r > FIFO.hylafax.mysql
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![]()
Partager