No meu script, tenho várias camadas de status:
- controle remoto está disponível (ping)
- o serviço NFS remoto está ativo
- O NFS remoto está exportando um determinado diretório
- o NFS remoto está montado (montagem)
Para (2) e (3), acredito que rcpinfo
é a melhor aposta. Para (2), porém, não consigo descobrir como restringir minha consulta ao serviço NFS sem iniciar um subshell (o que não é aceitável para este aplicativo). Para (3), não tenho certeza de que essas informações estejam disponíveis remotamente (sem ssh
entrar, é claro).
Estou trabalhando no RHEL 6 e não tenho acesso a programas que não estão incluídos na distribuição padrão.
showmount -r remote
vai me dizer seremote
está exportando alguma coisa , mas existe alguma maneira de determinar seremote:/mnt/dir
está sendo exportada sem iniciar um subshell (ou seja, um pipeline)?showmount -e remote
dirá se vocêremote
exportou alguma coisa.showmount -r
fornecerá apenas uma mensagem de erro, pois essa opção não existe. Você pode tentar usar a correspondência de substring do shell para basicamente grep para uma expressão regular na saída do showmount. Talvez dê uma olhada, por exemplo, em stackoverflow.com/questions/12619720/… #-r
opção versus-e
- foi o que eu quis dizer :) A 'abordagem de tentativa' já foi sugerida antes. Não gosto particularmente, mas parece uma opção real.Você pode usar
showmount -e <server>
para alguns aspectos do nº 3. Quando as exportações são simples, pelo menos sugere que um diretório (ou talvez um pai de um diretório) seja exportado.No segundo, não tenho certeza do que você está procurando. Se você estiver usando o NFSv3, procurará pelo menos mountd e nfs (e, em alguns casos, pode confirmar os gerenciadores de bloqueio). Você pode procurar por qualquer explicitamente com rpcinfo, como você diz.
fonte
showmount -r remote
vai me dizer seremote
está exportando alguma coisa , mas existe alguma maneira de determinar seremote:/mnt/dir
está sendo exportada sem iniciar um subshell (ou seja, um pipeline)?subprocess
módulo Posso montar um pipeline com ele, mas prefiro não complicar muito o design. Preciso evitar iniciar um subshell para permitir que o script seja morto normalmente - se ele for morto, seus processos filhos serão mortos, mas não os filhos dos processos filhos. Assim, o subshell seria morto, mas não os processos que o subshell gera. Também observei querpcinfo
pode demorar até três minutos para retornar, que é a base original para a coisa sem subcamadas. É tarde demais para mudar isso agora, no entanto.rpcinfo
não responde a nada além do SIGKILL (que é uma atribuição incorreta - o sistema operacional obviamente apenas mata o processo). De qualquer forma, isso ainda iniciaria um shellrpcinfo
- o problema subjacente permanece.Listar todos os diretórios de exportação pseudo-raiz NFS-V4
Confira minha resposta em outro tópico
fonte
/net
montagem funcione, o/etc/auto.net
script deve estabelecer que o servidor tenha uma exportação correspondente. Isso usa oshowmount
comando Se o servidor tiver apenas NFSv4, ele não funcionará (o showmount é exibidoRPC: Program not registered
e/net/server
apenas reportaráFile not found
)