Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester si un répertoire distant est toujours accessible

10 réponses
Avatar
Franssoa
Bonjour,

Pour imprimer depuis mon serveur linux sur une imprimante Windows (Seiko
SLP100), j'utilise un deamon sur le PC windows qui lit un de ses
répertoires (nommé...spool). Lorsqu'un pdf y est déposé, il est imprimé.

Je monte ce répertoire sur le serveur qui créé le pdf (mount -t smbfs...)
Le soir le PC windows est éteint et le serveur reste allumé.
Le lendemain la connexion est perdu et je dois démonter et remonter le
répertoire distant.

Pour savoir si la connexion est toujours active, avant chaque copie de
pdf dans le dossier spool depuis mon programme python, j'utilise un
"ping -c 1 -w 1". S'il retourne "100% packet loss", je démonte et
remonte le dossier.

Mais je trouve façon peu satisfaisante. Il y a-t-il une autre commande
qui pourrait remplacer le ping ?

Franssoa

10 réponses

Avatar
Fabien LE LEZ
On Tue, 13 Apr 2010 13:46:24 +0200, Franssoa :

Il y a-t-il une autre commande
qui pourrait remplacer le ping ?



Ne peux-tu pas mettre un fichier non-PDF dans le répertoire "spool",
dont tu peux vérifier l'existence ?

Autre solution : dans le répertoire de montage, mets un fichier bidon.
Dès que le répertoire distant est monté, le fichier devient invisible.
Avatar
Franssoa
Fabien LE LEZ a écrit :
On Tue, 13 Apr 2010 13:46:24 +0200, Franssoa :

Il y a-t-il une autre commande
qui pourrait remplacer le ping ?



Ne peux-tu pas mettre un fichier non-PDF dans le répertoire "spool",
dont tu peux vérifier l'existence ?

Autre solution : dans le répertoire de montage, mets un fichier bidon.
Dès que le répertoire distant est monté, le fichier devient invisible.



Le problème (mon problème en fait...) est que si le dossier n'est plus
accessible*, le test d'un fichier va générer un time-out après plusieurs
secondes. J'aurais aimé une réponse immédiate.

Je viens de voir (seulement maintenant!) qu'il existe une fonction en
python os.path.ismount(path). Je vais tester cela demain.

Franssoa


*PC windows éteint la nuit, et non reconnu le lendemain à l'allumage
sans umount/mount
Avatar
Franssoa
Franssoa a écrit :
Je viens de voir (seulement maintenant!) qu'il existe une fonction en
python os.path.ismount(path). Je vais tester cela demain.


Zut... même comportement :
import os.path
print os.path.ismount("/mnt/spool/slp")






False...mais après 10 secondes....

Finalement un ping, umount et re-mount c'était pas une si mauvaise idée...

Franssoa
Avatar
Herve Autret
On Wed, 14 Apr 2010 09:36:48 +0200, Franssoa wrote:

Finalement un ping, umount et re-mount c'était pas une si mauvaise
idée...



J'aurais pensé que la solution de Fabien était rapide : je résume :
placer un fichier dans le répertoire unix /avant/ le montage smbfs.

Quand le répertoire est monté, le fichier est invisible et la réponse est
immédiate ; s'il n'est pas monté, le fichier est visible et on le sait
également tout de suite.

Sauf si le PC Windows arrête silencieusement de servir le montage et que
ça bloque le serveur linux lorqu'il le cherche...
--
Hervé
Avatar
Nicolas George
Franssoa wrote in message <hq58gi$q1e$:
Je pense qu'éteindre le PC windows toute la nuit fait perdre la
connexion au serveur qui n'arrive pas à la rétablir le matin sans la
remonter.



Mets une crontab au milieu de la nuit qui se contente de faire « ls $rep >
/dev/null », ça forcera le timeout et le démontage à avoir lieu.
Avatar
Fabien LE LEZ
On Tue, 13 Apr 2010 13:46:24 +0200, Franssoa :

Je monte ce répertoire sur le serveur qui créé le pdf (mount -t smbfs...)



En fait, je crois que ton erreur est là.
Tu devrais créer le fichier sur la machine locale, puis le transférer
sur le serveur avec smbclient.
Avatar
Franssoa
Nicolas George a écrit :
Franssoa wrote in message <hq58gi$q1e$:
Je pense qu'éteindre le PC windows toute la nuit fait perdre la
connexion au serveur qui n'arrive pas à la rétablir le matin sans la
remonter.



Mets une crontab au milieu de la nuit qui se contente de faire « ls $rep >
/dev/null », ça forcera le timeout et le démontage à avoir lieu.


Bonne Idée !

Franssoa
Avatar
Franssoa
Fabien LE LEZ a écrit :
On Tue, 13 Apr 2010 13:46:24 +0200, Franssoa :

Je monte ce répertoire sur le serveur qui créé le pdf (mount -t smbfs...)



En fait, je crois que ton erreur est là.
Tu devrais créer le fichier sur la machine locale, puis le transférer
sur le serveur avec smbclient.



Ben non... sur le serveur, j'ai mon "intranet" qui créé le pdf (avec
reprotlab), puis une fois créé le transfère sur le PC windows ou un
deamon le détecte et l'imprime.

Mais la solution de Nicolas me semble bonne.

Merci à tous de votre aide
Franssoa
Avatar
Sergio
Franssoa a écrit :

Pour imprimer depuis mon serveur linux sur une imprimante Windows (Seiko
SLP100), j'utilise un deamon sur le PC windows qui lit un de ses
répertoires (nommé...spool). Lorsqu'un pdf y est déposé, il est imprimé.



Je vois ce thread depuis quelques temps. T'as pas trouvé plus simple comme système ?

Par exemple :
http://doc.ubuntu-fr.org/partager_imprimante_windows_sans_pilotes_sur_pc_client_ubuntu

Je monte ce répertoire sur le serveur qui créé le pdf (mount -t smbfs...)
Le soir le PC windows est éteint et le serveur reste allumé.
Le lendemain la connexion est perdu et je dois démonter et remonter le
répertoire distant.

Pour savoir si la connexion est toujours active, avant chaque copie de
pdf dans le dossier spool depuis mon programme python, j'utilise un
"ping -c 1 -w 1". S'il retourne "100% packet loss", je démonte et
remonte le dossier.



Et au cas où tu veux garder cette architecture (si par exemple ma solution est inadéquate), tu ne pourrais pas faire le contraire :
- Le répertoire "spool" est sur le serveur Linux
- Le PC Windows monte ton répertoire spool, le démon Windows va faire son boulot dans ce répertoire, et éventuellement, au démarrage
du petit matin, aller imprimer les jobs placés dans la nuit.

Tu n'auras pas à tester la présence du PC Windows...

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Franssoa
Sergio a écrit :
Franssoa a écrit :

Pour imprimer depuis mon serveur linux sur une imprimante Windows
(Seiko SLP100), j'utilise un deamon sur le PC windows qui lit un de
ses répertoires (nommé...spool). Lorsqu'un pdf y est déposé, il est
imprimé.



Je vois ce thread depuis quelques temps. T'as pas trouvé plus simple
comme système ?

Par exemple :
http://doc.ubuntu-fr.org/partager_imprimante_windows_sans_pilotes_sur_pc_client_ubuntu


Je vais aller voir ça de plus prêt, effectivement ça à l'air bien. J'ai
fait un rapide test avec une autre imprimante a étiquette branchée sur
mon XP en virtualbox et ça à l'air de fonctionner.... en tout cas des
infos passent, mais je ne sort rien (probablement du a un problème de
formats d'étiquettes...mais c'est une autre histoire).


Et au cas où tu veux garder cette architecture (si par exemple ma
solution est inadéquate), tu ne pourrais pas faire le contraire :
- Le répertoire "spool" est sur le serveur Linux
- Le PC Windows monte ton répertoire spool, le démon Windows va faire
son boulot dans ce répertoire, et éventuellement, au démarrage du petit
matin, aller imprimer les jobs placés dans la nuit.

Tu n'auras pas à tester la présence du PC Windows...


J'ai peur de charger le réseau pour rien (aller regarder depuis le pc
windows le répertoire sur le serveur plusieurs 1 à 2 fois par secondes).
Mais je me fait peut-être du soucis pour rien

Merci des pistes
Franssoa