是否有任何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