如何自动根据职位设置NextCloud用户配额?
- By : Will
- Category : Bash, Cloud storage
Bash
1 前言
一个问题,一篇文章,一出故事。
今天更新一个自动根据AD中的职位(title)设置NextCloud用户可用空间配额的脚本,于是记录在本章节。
2 最佳实践
2.1 测试环境
2.2 部署监控脚本
2.2.1 创建脚本
bash ~/scripts/setVicePresidentDefaultQuota.sh
加入如下配置,
#!/bin/bash
ldapSer="cmeschool.org"
ldapPort="3268"
ldapPasswd='adminPWD'
ldapUser="CN=admin,CN=Users,DC=cmdschool,DC=org"
ldapBaseDN="DC=cmdschool,DC=org"
ldapFilter="(&(title=*President)(objectCategory=person))"
quotaDefaultSize="10 GB"
quotaLog="/var/log/nextcloud/setVicePresidentDefaultQuota.log"
occ() {
sudo -u apache /usr/bin/php -d apc.enable_cli=1 -d memory_limit=1024M /var/www/nextcloud/occ "$@"
}
getVipList() {
vipList=`ldapsearch -x -h "$ldapSer" -p "$ldapPort" -w "$ldapPasswd" -D "$ldapUser" \
-b "$ldapBaseDN" "$ldapFilter" | grep "sAMAccountName:" | sed 's/sAMAccountName: //g'`
echo "$vipList"
}
getUserID() {
staffID="$1"
userID=$(occ ldap:search "$staffID" | grep -oP '\(\K[^)]+')
echo "$userID"
}
getUserQuota() {
userID="$1"
userQuota=$(occ user:info "$userID" | grep "quota:" | grep "GB" | sed 's/ - quota: //g')
echo "$userQuota"
}
getQuota() {
for staffID in $(getVipList); do
userID=$(getUserID "$staffID")
userQuota=$(getUserQuota "$userID")
echo "$staffID ($userID): $userQuota"
done
}
setQuota() {
for staffID in $(getVipList); do
userID=$(getUserID "$staffID")
userQuota=$(getUserQuota "$userID")
formatUserQuota=`echo $userQuota | sed -e 's/GB//g' -e 's/ //g'`
formatQuotaDefaultSize=`echo $quotaDefaultSize | sed -e 's/GB//g' -e 's/ //g'`
if [ "$formatUserQuota" -ge "$formatQuotaDefaultSize" ]; then
continue
fi
occ user:setting "$userID" files quota "$quotaDefaultSize"
echo "`date +'%Y-%m-%d %H:%M:%S'` Modify user $staffID quota from $userQuota to $quotaDefaultSize." | tee -a "$quotaLog"
done
}
case "$1" in
set)
setQuota
;;
get)
getQuota
;;
*)
echo "Usage: $0 {get|set}"
;;
esac
2.2.2 测试脚本
bash ~/scripts/setVicePresidentDefaultQuota.sh get bash ~/scripts/setVicePresidentDefaultQuota.sh set
2.2.3 设置脚本触发
0 8 */1 * * sh ~/scripts/setVicePresidentDefaultQuota.sh set
没有评论