bash - 打印一个月内同一时间段内平均登录系统的用户数的脚本
问题描述
我需要编写一个脚本,打印一个月内同一时间段内登录系统的平均用户数。我需要使用“last”和“awk”。
为了更清楚,我们以 3 月和 10:00-11:00 为例。假设在 3 月 1 日,我们有 2 个用户在那个时期登录,在 3 月 2 日,我们有 4 个用户在那个时期登录,依此类推。对于这 2 天,我们有一个平均数字。
这是我到目前为止所得到的,但我只设法显示在给定日期登录的用户。
if [ $# = 0 ]
then
echo "Give more parameters"
else
echo "Date:"
d=`read`
for i
do
echo "user: $i"
last $i | grep $d
done
fi
我期待看到这样的结果:
3 月 10:00 到 11:00 之间的平均用户数为 x。(正如预期的输出示例)
解决方案
这种东西:
last | awk '{
if(NF>7){
if($(NF-5)=="Mar"){ # You may change the month or even accept it as a parameter
if($(NF-4) != date){datecount++};
match($(NF-3),/^([0-9]+)/,arr);
if(arr[1]>=8 && arr[1]<=16){
# Note I am using different time interval, change it accordingly
count++;
}
}
date=$(NF-4);
}
}
END{
print "Total logins : ",count;
print "Total dates : ",datecount;
print "Average logins : ",count/datecount;
}'
样本输出
count : 20
datecount : 12
average : 1.66667
推荐阅读
- python - 用户警告:警告:通过强制转换为 float32 降低了框绑定精度
- azure - 使用 openshift 和 azure 的自我管理集群
- python - 返回时间段之间的绝对差
- oracle - Oracle SQL 运行批处理
- javascript - 了解 JavaScript 和 DOM 的“接口”
- c++ - 使用 CLion IDE 为 QNX6.5 Neutrino 目标开发代码
- azure - 我可以使用 Azure App Insights 监控逻辑应用程序吗?
- css - 如何导入引导 scss 避免在最终 css 中复制标题或类语句?
- python - 将 python SVM 文本分类器转换为 Tensorflow 模型
- mongodb - How can I get mongo documents with multiple non-exclusive selectors using Mongoose?