Python访问NFS配额信息?

时间:2012-03-20 03:43:54

标签: python nfs quota

是否有任何Python模块可以让我访问NFS配额信息而无需解析quota命令的输出?我知道,如果我有足够的动力,我可以使用Python的xdrlib模块编写自己的ONC / RPC代码,但我全心全意地希望我不必亲密地参与NFS的内部工作。

理想情况下,我希望有一个现有的RPC实现,或者一些更高级别的模块(比如现有C库的包装器)。

可接受的替代品类似于产生更多机器可读输出的quota命令。

2 个答案:

答案 0 :(得分:1)

这个问题最初是由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       

Alice会理解这与她的帐户有什么关系。

事实证明,quota-utils包裹背后的思想终于意识到了工具中固有的问题;版本4.00(在Fedora 16中可用)有几个新的选项可以将quota命令变成实际产生有用信息的东西。

特别感兴趣的是-f选项:

-f, --filesystem-list     display quota information only for given filesystems

现在,用户可以运行:

quota -f ~

获取其主目录的配额信息。此外,-s选项将显示“人类可读”数字,而不是将所有内容显示为块。

对于Alice,这可能看起来像:

$ 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的输出:

  • 当“filesystem”名称太长时,-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

对自动化更有用。

答案 1 :(得分: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挂载点。 我这样做了。