Python访问NFS配额信息?

2024-05-20 17:59:48 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有Python模块可以让我访问NFS配额信息,而不必解析quota命令的输出?我知道,如果我有足够的动力,我可以使用Python的xdrlib模块编写自己的ONC/RPC代码,但我衷心地希望我不必与NFS的内在联系在一起。在

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

一个可接受的替代方法是生成更多机器可读输出的quota命令。在


Tags: 模块代码命令信息情况rpc动力配额
2条回答
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命令的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(在Fedora16中可用)中,有几个新选项可以将quota命令转换为实际生成有用信息的东西。在

特别有趣的是-f选项:

^{pr2}$

现在,用户可以运行:

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的输出变得更加容易:

  • 当“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

这对自动化更有用。在

相关问题 更多 >