Surveillance de montage CIFS

Résolu/Fermé
Jyves - 14 nov. 2011 à 11:12
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 14 nov. 2011 à 16:22
Bonjour,

Je butte sur une épine qui me taraude depuis déjà 2 semaines.
Je vous explique :

J'ai une application PHP qui tourne sur un serveur CENTOS (5.2) configurée, fonctionnelle etc...
Cette application récupère des fichiers émis par un serveur de publication sous WIN 2K3, qui possède une autre appli PHP, qui génère des fichiers utiles à la première appli.

Je précise que j'ai choisi le mode de communication via montage CIFS entre ces 2 serveurs car je me sers de l'infrastructure de mon hébergeur pour la bande passante réseau.
La raison pour laquelle je n'ai pas tout groupé sur le même serveur est la compatibilité de l'environnement.
La première appli ne tourne que sous environnement Windows (client lourd), reliée à une base de données gérée par du PHP avec une appli front-end qui va opérer un travail de parsing, appel d'objets COM & services Windows puis une génération de fichiers à la volée.
Ces fichiers de l'appli Windows sont stockés dans un répertoire local du serveur montés via CIFS depuis un serveur LINUX.

J'ai opéré un montage CIFS entre ces 2 serveurs depuis la machine sous LINUX via la commande :
mount -t cifs //ip_du_serveur_distant/repertoire_source /point_de_montage/ --verbose -o user=USER,password=PASSWORD >>/fichier_log

J'obtiens donc un montage fonctionnel entre mes 2 machines avec une confirmation du fonctionnement du script vers le fichier log

J'ai lancé un script en bash (.sh) pour monter automatiquement le rep distant à chaque démarrage du serveur via appel du script au lancement global de l'ensemble des services.

Tout fonctionne bien.

PROBLÉMATIQUE :
Mon hébergeur reboote de temps en temps les serveurs pour maintenance, ce qui me fait perdre le montage CIFS.
Quand il s'agit de la machine LINUX, pas de soucis car un script au démarrage est prévu pour.
En revanche, quand il s'agit de la machine Windows qui redémarre, je perds le point de montage.

REQUÊTE :
Je souhaite trouver un script (de préférence en shell bash ou PERL) qui me permettre d'opérer en 2 parties une surveillance continue de ce point de montage :

1 ) surveillance régulière du point de montage toutes les heures. (loop ou tout autre moyen de monitoring, qui check l'état du montage à l'instant T)
2 ) en cas de perte du point de montage, relancer le script de montage auto (déjà préparé) puis envoyer un log détaillé de l'action opérée sur un répertoire défini ou si possible, directement par mail.

J'ai écumé l'ensemble des sites de communautés Linux sans trouver de quoi me permettre d'aboutir .
J'ai acheté aussi une bible d'admin réseau LINUX sans pour autant trouver de sujet qui traite la question.

Si vous pouviez m'orienter sur des pistes, je vous en serai très reconnaissant.

A voir également:

4 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 nov. 2011 à 12:06
Salut,

REQUÊTE : Je souhaite trouver un script (de préférence en shell bash ou PERL) qui me permettre d'opérer en 2 parties une surveillance continue de ce point de montage
Ôtes-moi d'un doute, c'est bien un script pour la machine Windows que tu cherches, ou j'ai mal compris ?
0
Bonjour ZIPE31,

Le script que je cherche est un script qui tournera sur la machine LINUX.
Son but etant de checker l'état du montage CIFS et si défaut constaté, relancer automatiquement le montage par appel de mon script "automount.sh"

Le souci que j'ai souligné dans mon post est :
Lorsque la machine Windows redémarre suite à reboot, je perds le montage CIFS (normal puisqu'il n'y a plus de connexion directe sur ce répertoire, qui devient par définition indisponible).
Le PB, c'est que ce répertoire ne se remonte pas automatiquement, il faut que je surveille manuellement son état, ce qui me sollicite sur une astreinte continuelle dont je suis dépendant si je souhaite que l'appli fonctionne correctement.

A savoir que si mon montage saute, l'appli ne synchronise pas et renvoie une erreur administrative et bloque. Je suis donc obligé, par la même occasion, de supprimer l'apparition de mes fichiers temporaires qui se déposent dans un répertoire /tmp car ils empêchent le dépôt de nouveaux fichiers tant qu'ils sont présents.
En effet, un script de cleaning vient à nettoyer ce dossier à la fin de l'execution du script, qui est lui même l'étape finale du bon fonctionnement en retour de l'éxécution des tâches.

Bien cdlt.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 nov. 2011 à 14:09
Il me semble que le plus simple est de faire une requête "smbclient" sur ton serveur et en fonction du code retour ($?) faire ce qui s'impose.

Un exemple de test :

smbclient //ip_du_serveur_distant/ -U USER%password -L Hôte > fich.log


Puis tu testes le code retour :
echo $?


Si la valeur est "0" (zéro) tout va bien, si c'est "1" c'est que le serveur est down.

Donc à partir de là, tu peux t'envoyer un mail avec le fichier de log...

;-))
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 nov. 2011 à 14:20
Donc à partir de là, tu peux t'envoyer un mail avec le fichier de log...
Et remonter la ressource bien évidemment ;-))
0
Merci super !

Par contre, je viens de me rendre compte d'un nouveau PB.
Comme dans la plupart de ces contextes, on a toujours un souci, en voici un de taille.

Quand je fais appel à la commande smbclient, il me renvoie un "commande inconnue".

Je lance donc un 'yum install smbclient' pour installer le package SMB.

A ce moment là je reçois le message d'erreur suivant :
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named cElementTree

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.4.3 (#1, Sep 21 2011, 20:06:00)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)]

If you cannot solve this problem yourself, please go to
the yum faq at:
  http://wiki.linux.duke.edu/YumFaq


Je suis donc allé sur la F.A.Q.
J'ai opéré un appel des process via le python
import yum


Une erreur ressortant le ElementTree apparait encore.

je décide donc de télécharger les rpm de l'ensemble package python
(urlgrabber, sql etc...)
je dl la derniere version rpm de yum,
j'ai bien pris soin de désinstaller l'ensemble des packages via la cmd rpm -e aupraravant mais rien de tout cela n'arrange l'histoire.

J'ai opéré une gnome-session via ssh-X déporté sur mon mac, une fois sur l'interface graphique, rien à faire, je ne parviens pas à mettre à jour les packets.
Je fais donc le choix d'installer le package APT.
Sans succès au DL via wget : Erreur inconnue.

Et là je suis coincé, car si je fais un rpm --rebuild il me dit que les dépendances du package RPM-DEVEL et autres sont manquantes, qui plus est, impossibles à installer car "erreur inconnue".

Un pti coup de pouce ?

PS : je bosse sur CENTOS 5.2

Je commence sérieusement à regretter UBUNTU...

merci
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 nov. 2011 à 16:01
Oula ;-((

Peut être devrais-tu demander ça sur un forum dédié à CentOS, non ? ;-\

Bon après même sans smbclient, peut être pourrais-tu tester juste l'accès à la ressource, via un simple listing de répertoire (ls) ???
0
Merci ZIPE31,

Ta solution me semble en effet efficace.
Je récupère le résultat en verbose du 'ls', que j'injecte ensuite dans un fichier qui va être lu par mon script pour comparer le résultat en parsing via la source à comparer.
C'est un peu alambiqué comme truc, mais mon résultat que j'ai eu il y a 3 minutes me paraît satisfaisant.
J'ai coupé moi même volontairement le CIFS en déconnectant la machine distante du réseau et mon appli m'a renvoyé l'erreur.
Le script s'est déclenché (crontab toutes les 5 minutes) et a tenté de remonter.
Sans succès pour la première fois car j'ai volontairement laissé la machine déconnectée, envoi du log direct sur mail.
(host seems down, car couplé avec commande nmap + ping en verbose)
Ensuite au second passage cron, le montage s'est correctement effectué sans accroc.
J'ai ajouté un entête de date & heure pour bien séparer les blocs d'éxécution du service.
J'ai bypassé le générateur d'erreur pour marquer : R.A.S. lorsque le cron se lance et check si présent.

Merci beaucoup pour ton aide.

PS : en effet, je vais poster sur un forum spé pour mon souci de yum.
Il paraît que c'est une erreur récurrente des distributions rhel 5 sous CENTOS.

bien cdlt.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
14 nov. 2011 à 16:22
Bon courage pour la suite ;-))
0