我需要返回访问日期超过60天的记录以及Perforce UserName, Email &最后一次访问的日期。我知道使用"% user % %Email% %Access%&;"获取所有用户列表的强制命令。结合p4用户。但是,我正在寻找一些可以在cron作业中设置为每日监控并通过电子邮件发送警报的脚本。
我用来获取所有用户列表的命令是
p4 -ztag -F "%User% %Email% %Access%" users | awk '{$3=strftime("%Y/%m/%d %H:%M:%S",$3)} {print}' | sort -k 2,3 | sed 's/[ t]/,/g'
任何帮助都将非常感激。
在Linux上,这将生成一个csv样式的按用户名排序的列表:
p4 -ztag -F "%User% %Email% %Access%" users | awk '$3 < '"$(date -d "60 days ago" +%s)"' {print $1","$2","strftime("%Y/%m/%d %H:%M:%S",$3)}'
如果你想也按访问日期排序,你可以sort
awk。
p4 -ztag -F "%User% %Email% %Access%" users | sort -k3rn | awk '$3 < '"$(date -d "60 days ago" +%s)"' {print $1","$2","strftime("%Y/%m/%d %H:%M:%S",$3)}'
对于OSX,它看起来像:
p4 -ztag -F "%User% %Email% %Access%" users | sort -k3rn | awk '$3 < '"$(date -v-60d +%s)"' {print $1","$2","strftime("%Y/%m/%d %H:%M:%S",$3)}'
如果您将上述任何命令重定向到文本文件,那么您可以将该文本文件读取为用户列表,然后删除。
awk -F, '{print $1}' old.users.list | xargs -I{} p4 user -df {}
注意,这是一种相当肤浅的方法。它不会删除他们的工作区或挂起的更改列表/架子。可以将这些步骤合并为更彻底的清理脚本的一部分,但不同的公司对于如何处理搁置的更改等有自己的策略。
您至少可以通过这种方式快速释放许可证。
在Python中使用p4python模块:
from datetime import datetime
from P4 import P4
with P4().connect() as p4:
for user in p4.run_users():
access_time = datetime.fromtimestamp(int(user['Access']))
if (datetime.now() - access_time).days > 60:
print(user['User'], user['Email'])
# or do whatever else you want