Dans mon script, j'ai plusieurs couches de statuts:
- la télécommande est disponible (ping)
- le service NFS distant est actif
- NFS distant exporte un certain répertoire
- NFS distant est monté (montage)
Pour (2) et (3), je pense que rcpinfo
c'est le meilleur pari. Pour (2) cependant, je ne peux pas comprendre comment restreindre ma requête au service NFS sans démarrer un sous-shell (ce qui n'est pas acceptable pour cette application). Pour (3), je ne suis pas sûr que cette information soit même disponible à distance (sans ssh
entrer, bien sûr).
Je travaille sur RHEL 6 et je n'ai pas accès à des programmes qui ne sont pas inclus dans la distribution standard.
showmount -r remote
me dira siremote
exporte quelque chose , mais est-il possible pour moi de déterminer siremote:/mnt/dir
est exporté sans démarrer un sous-shell (c'est-à-dire un pipeline)?showmount -e remote
vous dira siremote
a exporté quelque chose.showmount -r
ne vous donnera qu'un message d'erreur car cette option n'existe pas. Vous pouvez essayer d'utiliser une correspondance de sous-chaîne shell pour essentiellement grep pour une expression régulière dans la sortie showmount. Peut-être jetez un œil à eg stackoverflow.com/questions/12619720/…-r
option versus-e
- c'est ce que je voulais dire :) L'approche «tentative» a déjà été suggérée. Je n'aime pas particulièrement ça, mais ça ressemble à une vraie option.Vous pouvez utiliser
showmount -e <server>
pour certains aspects de # 3. Lorsque les exportations sont simples, cela suggère au moins qu'un répertoire (ou peut-être un parent d'un tel répertoire) est exporté.Pour le n ° 2, je ne suis pas sûr de ce que vous recherchez. Si vous utilisez NFSv3, vous rechercherez au moins mountd et nfs (et dans certains cas, vous voudrez peut-être confirmer les gestionnaires de verrouillage). Vous pouvez vérifier explicitement tout avec rpcinfo comme vous le dites.
la source
showmount -r remote
me dira siremote
exporte quelque chose , mais est-il possible pour moi de déterminer siremote:/mnt/dir
est exporté sans démarrer un sous-shell (c'est-à-dire un pipeline)?subprocess
module. Je peux configurer un pipeline avec, mais je préfère ne pas trop compliquer la conception. Je dois éviter de démarrer un sous-shell pour permettre au script d'être tué avec élégance - s'il est tué, ses processus enfants seront tués, mais pas les enfants des processus enfants. Ainsi, le sous-shell serait tué, mais pas les processus qu'il engendre. J'ai également noté que lerpcinfo
retour peut prendre jusqu'à trois minutes, ce qui est la base d'origine de la chose sans sous-coque. Il est cependant beaucoup trop tard pour changer cela maintenant.rpcinfo
il ne répond à rien d'autre qu'à SIGKILL (ce qui est une mauvaise attribution - le système d'exploitation tue évidemment le processus). Quoi qu'il en soit, cela lancerait toujours un shell pour démarrerrpcinfo
- le problème sous-jacent demeure.Liste de tous les répertoires d'exportation NFS-V4 pseudo-racine
Découvrez ma réponse dans un autre fil
la source
/net
montage fonctionne, le/etc/auto.net
script doit établir que le serveur a une exportation correspondante. Cela utilise lashowmount
commande. Si le serveur ne dispose que de NFSv4, cela ne fonctionnera pas (showmount s'afficheRPC: Program not registered
et/net/server
ne fera que signalerFile not found
)