建立檢查使用者Quota的網頁

发表于:2007-07-04来源:作者:点击数: 标签:
建立檢查使用者Quota的網頁 說實在的,FTP server(目前使用proftpd)沒有看到提供系統quota訊息的支援,所以寫了個小程式檢查quota,將超過quota限制的使用者帳號產生網頁列表供使用者自行查看。這個程式要包含下列目的:檢查quota列表,將已達soft quota及har
建立檢查使用者Quota的網頁

說實在的,FTP server(目前使用proftpd)沒有看到提供系統quota訊息的支援,所以寫了個小程式檢查quota,將超過quota限制的使用者帳號產生網頁列表供使用者自行查看。這個程式要包含下列目的:檢查quota列表,將已達soft quota及hard quota標準的使用者帳號篩選出來。 將篩選出來的帳號以網頁的方式呈現。 定期更新篩選名單及網頁。 已經做出來的結果在這裡可以看到。詳細作法如下:檢查quota列表,將已達soft quota及hard quota標準的使用者帳號篩選出來。 這裡使用repquota工具程式列出硬碟分割區裡所有的使用者的quota報告,並用gawk script篩選出超過quota的使用者。指令:列出學生帳號使用分割區的quota報告。/usr/sbin/repquota /home/student以下是部份輸出:[root@host3 root]# repquota /home/student *** Report for user quotas on device /dev/sda10 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- s110049 +- 20331 18000 20000 none 51 0 0 s110050 -- 4964 18000 20000 23 0 0 s110051 -- 7156 18000 20000 54 0 0 s110052 -- 2212 18000 20000 42 0 0 s110053 -- 4836 18000 20000 69 0 0 s110054 -- 3012 18000 20000 54 0 0 在產生的報告裡,可以看到s110049使用者已經超出hard quota,所以在帳號後面被加註一個「加號」,這就是我們可以篩選的標記。注意:repquota指令為root專用,一般使用者不能用這個指令。篩選部份,我使用gawk的正規表示式來進行篩選,並將篩選出來的資料過濾到只剩下使用者帳號。指令如下:/usr/sbin/repquota /home/student | gawk 'BEGIN{FS=" "}/+/{print }'指令說明:前半段使用repqutoa產生quota報告,並用管線將輸出轉給gawk。後半段的部份,單引號裡為gawk的程式,簡單說明如下:BEGINBEGIN為gawk裡的特殊篩選條件,代表程式一開始要執行{}裡的程式。FS=" "設定欄位分隔符號為空格,如此,可以將每一列的資料以空格分隔成欄位使用。每個欄位用$n表示,如為第一個欄位,為第二個欄位…/+/正規表示式,篩選包含加號的列。print 利用print指令將篩選出的列的第一個欄位輸出至stdout。將篩選出來的帳號以網頁的方式呈現。 這裡是一個PHP程式。為什麼不用shell script?原本我也想,我來發現還是用PHP比較快,可能是個人的習慣吧。程式在這裡,請自行參考。以下記下較特殊的地方。取得篩選帳號的方法:$badquota["student"]=`/usr/sbin/repquota /home/student|awk 'BEGIN{FS=" "}/+/{print }'|sort`;這裡用`shell command`將shell命令的輸出傳給$badquota['student']變數,變數內容為一個大字串,包含stdout的輸出,每行以換行符號分隔。 為了安全起見,不使用任何參數,直接將shell script寫死在PHP程式裡。 這個PHP程式並不是由apache執行,因為apache不能執行repqutoa指令。我是用下面的方法執行:php -f reportquota.php > webquota.html由root直接使用PHP-cli解析reportquota.php,並將輸出重導向至webquota.html網頁。 定期更新篩選名單及網頁。 這個部份交由crontab處理即可,我設定每15分鐘重新產生一次網頁如下:5,20,35,50 * * * * /usr/bin/php -f /root/bin/reportquota.php > /home/netflow/public_html/webquota.html如此,便可以在 http://web.nlhs.tyc.edu.tw/~netflow/webquota.html看到quota爆掉的名單,而且系統每15分鐘更新一次。

原文转自:http://www.ltesting.net