是否有任何Python模块可以让我访问NFS
配额信息,而不必解析quota
命令的输出?我知道,如果我有足够的动力,我可以使用Python的xdrlib
模块编写我自己的ONC/RPC代码,但我希望尽我所能,不必与NFS的内部密切相关。Python访问NFS配额信息?
理想情况下,我希望现有的RPC实现或一些更高级别的模块(如现有的C库或其他东西的包装)。
一个可以接受的替代品就像是产生更多机器可读输出的quota
命令。
是否有任何Python模块可以让我访问NFS
配额信息,而不必解析quota
命令的输出?我知道,如果我有足够的动力,我可以使用Python的xdrlib
模块编写我自己的ONC/RPC代码,但我希望尽我所能,不必与NFS的内部密切相关。Python访问NFS配额信息?
理想情况下,我希望现有的RPC实现或一些更高级别的模块(如现有的C库或其他东西的包装)。
一个可以接受的替代品就像是产生更多机器可读输出的quota
命令。
这个问题最初是由quota
命令3.13版的问题产生的,这个命令本质上是无用的,因为它是最终用户确定配额信息的工具。例如,如果运行alice
quota
,她可能会看到如下所示的结果:
Disk quotas for user alice (uid 100):
Filesystem blocks quota limit grace files quota limit grace
fileserver.example.com:/staff/b/bob
9254720 9728000 10240000 119768 0 0
爱丽丝会理所当然地想知道这个曾与她的帐户做。
事实证明,长期以来quota-utils
软件包背后的思想意识到了该工具固有的问题;与4.00版本(Fedora 16中可用)有几个新的选项可用于将quota
命令转化为实际产生有用信息的内容。
特别感兴趣的是-f
选项:
-f, --filesystem-list display quota information only for given filesystems
所以,现在,用户可以运行:
quota -f ~
,并得到他们的主目录中的配额信息。此外,-s
选项将显示“人类可读”数字,而不是将所有内容都显示为数据块。
爱丽丝,这可能是这样的:
$ quota -s -f ~
Disk quotas for user alice (uid 100):
Filesystem blocks quota limit grace files quota limit grace
fileserver.example.com:/staff/a/alice
9038M 9500M 10000M 120k 0 0
此外,有两种选择,使得它更容易处理从quota
输出中的脚本:
-w
选项禁止当“文件系统”名称太长时,换行。-p
选项会显示0
的宽限时间。这意味着总是有相同数量的字段(而以前版本的quota
字段的数量可能因情况而异)。结合所有上述情况,我们得到这样的:
$ quota -wp -f ~
Disk quotas for user alice (uid 100):
Filesystem space quota limit grace files quota limit grace
fileserver.example.com:/staff/a/alice 9254720 9728000 10240000 0 119768 0
这是多自动化更为有用。
command_array = ['quota', '-wp', '-f', '/home/nfs/user1']
output = subprocess.check_output(command_array)
# use only the second line, this is util info
beauty_output = output.split('\n')[2].split()
remote_fs = beauty_output[0]
blocks = beauty_output[1]
quota = beauty_output[2]
limit = beauty_output[3]
...
考虑/ home/nfs/user1是nfs挂载点。 我已经这样做了。
嗯。我发现quota-utils软件包的更新版本包含更好输出的选项(例如'--raw-grace'和'--no-wrap')。 – larsks 2012-03-20 15:23:54