如何在Perforce中获得60天的老用户列表



我需要返回访问日期超过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)}'

如果你想也按访问日期排序,你可以sortawk。

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

相关内容

  • 没有找到相关文章

最新更新