Answers:
对于3),您可能想要使用showmount -e remote_nfs_server
它来显示remote_nfs_server是否已导出任何内容。
对于2),如果您不想使用shubshell,并且知道远程服务器是否运行NFSv3或NFSv4,以及TCP还是UDP,则可以使用rpcinfo专门查询:
rpcinfo -u remote_nfs_server nfs 3
通过UDP的NFSv3和
rpcinfo -t remote_nfs_server nfs 4
通过TCP的NFSv4
对于4),您可能需要查看“ 检查文件夹是否是已安装的远程文件系统”
更多的信息:
showmount -e remote
会告诉您是否remote
已导出任何内容。showmount -r
只会给您一条错误消息,因为该选项不存在。您可以尝试使用shell子串匹配来在showmount输出中基本上对正则表达式进行grep匹配。也许看看如stackoverflow.com/questions/12619720/...
-r
选项-e
– –的错误是我的意思:)以前曾建议过“尝试方法”。我不是特别喜欢它,但是看起来很不错。
您可以showmount -e <server>
在#3的某些方面使用。如果导出很简单,则至少建议导出一个目录(或该目录的父目录)。
# showmount -e server
/export (everyone)
对于#2,我不确定您要寻找什么。如果您使用的是NFSv3,则至少要查找mountd和nfs(在某些情况下可能要确认锁管理器)。如您所说,您可以使用rpcinfo明确检查任何内容。
# rpcinfo -t server mountd 3
program 100005 version 3 ready and waiting
showmount -r remote
会告诉我是否remote
正在导出任何内容,但是有什么办法让我确定是否remote:/mnt/dir
在不启动子外壳程序(即管道)的情况下进行导出?
subprocess
模块。我可以使用它来建立一个管道,但是我不想让设计变得那么复杂。我需要避免启动子外壳以使脚本被优雅地杀死-如果将其杀死,则将杀死其子进程,但不杀死其子进程。因此,子外壳将被杀死,但子外壳不会生成进程。我还注意到,rpcinfo
最多可能需要三分钟才能返回,这是无子外壳功能的原始基础。不过,现在改变这一点为时已晚。
rpcinfo
除了SIGKILL之外,什么都不响应(这是错误的归因–操作系统显然会杀死进程)。无论如何,这仍然会启动Shell启动rpcinfo
-根本的问题仍然存在。
/net
安装工作,/etc/auto.net
脚本必须确定服务器具有相应的导出。这使用showmount
命令。如果服务器仅具有NFSv4,它将无法正常工作(showmount显示RPC: Program not registered
,/net/server
并将仅报告File not found
)
showmount -r remote
会告诉我是否remote
正在导出任何内容,但是有什么办法让我确定是否remote:/mnt/dir
在不启动子外壳程序(即管道)的情况下进行导出?