Shell 命令行统计 apache 网站日志访问IP以及IP归属地

我的一个站点用 apache 服务跑着,积攒了很多的日志。我想用 shell 看看有哪些人访问过我的站点,并且他来自哪里。

因为日志太长了,所以我没跑完就放弃了,因为跑起来太慢了。。。

分析 apache 日志

140.205.16.220 - - [26/Jun/2017:03:49:51 +0800] "GET /content_article_3.html HTTP/1.1" 200 3

日志内容如上,这个很简单,只要以空格分割,取第一个就得到了IP了。

编写脚本

i=1
# 要分析的日志文件
log=apache.log
l=$(wc -l $log | sed 's/^[ \t]*//g' | cut -d ' ' -f1)
echo $l
while read line; doecho -en "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"`echo $i*100/$l | bc `'%/'$i'/'$l((i++))ip=`echo $line | cut -d ' ' -f1`grep "\<$ip\>" ip.txt >/dev/nullif [ $? -ne 0 ]; thencurl -sL http://ip.cn/index.php?ip=$ip >> ip.txtfi
done < $log
echo -e '\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bbOK     '

首先呢,当然是把我昨天写的进度拿出来整合进去啦。Shell 循环中实现展示进度百分比的脚本方法,但是因为文件是在是太长了一点,百分比已经看不到动态的表现,所以就又加上了显示行数和总行数。

然后用 cut 获取到每行的 ip 地址。

然后用 grepip.txt 这个文件中查找一下这个 ip 存在不存在,但是我不想把结果打印到终端,所以用输入到 /dev/null 实现禁止标准输出。

然后用 $? 输出结果是否为 0 判断这个 ip 是否存在过。

如果不存在,就去 ip.cn 查询一下 ip 归属地,并将结果追加到 ip.txt 文件

最后就完成了。

因为要上网查,所以效率是比较慢的。不过结果不重要,重要的是实现的过程。通过解决问题,还是学习到两个知识点。

以上脚本均在 mac 下测试通过,在 Linux 下可能会有稍许不同。
本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。

Shell 命令行统计 apache 网站日志访问IP以及IP归属地相关推荐

  1. python网站访问日志分析_python分析apache网站日志web日志的代码

    python分析apache网站日志的代码 1.分析日志的python框架awk.py 代码示例: # # Custom awk.py module # class controller: def _ ...

  2. linux shell 宏定义_Linux系统和Shell命令行简介,走上数据分析之路

    122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...

  3. 122.Linux系统和Shell命令行简介,走上数据分析之路

    122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...

  4. 13分页和shell命令行模式

    技术交流QQ群:1027579432,欢迎你的加入! 本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源! 1.为什么先讲分页功能 2.快速添加新的博客 shell命令行模式 ...

  5. 2021年大数据Hadoop(八):HDFS的Shell命令行使用

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的Shell命 ...

  6. 几种在shell命令行中过滤adb logcat输出的方法

    几种在shell命令行中过滤adb logcat输出的方法 分类标签: LogCat  ADB 我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流 ...

  7. 操作系统课设之简单 shell 命令行解释器的设计与实现

    前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...

  8. shell 清楚空格_Cygwin系列(五):Shell命令行初体验

    ► 本文共5700余字,预计阅读时间15分钟,本文知乎链接:Cygwin系列(五):Shell命令行初体验,本文同步发布于微信公众号. 前一篇文章Cygwin系列(四):一步一步搭建Cygwin最小系 ...

  9. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

最新文章

  1. # 利用fragment实现界面跳转
  2. 新老网站长时间无收录多半是站内出了问题
  3. Linux的概念与体系 6. Linux文本流(转载)
  4. 【SQL】结构化查询语言
  5. java毕业设计基于javaweb+mysql数据库实现的大学生助学贷款管理系统(源码+论文+开题报告
  6. 【可视化分析】雷达图
  7. Docker 安装 Elasticsearch 7.12.1
  8. 论文阅读笔记:A CRITIQUE OF SELF-EXPRESSIVE DEEP SUBSPACE CLUSTERING,自表达深度子空间聚类批判
  9. 七夕表白java代码_身为程序猿的你,七夕表白代码你有get吗
  10. docker及k8s容器面试精华汇总(一),祝大家顺利通过企业面试!
  11. ZOC7 Terminal 首次安装无法 上传/下载文件
  12. 如何配置一台台式计算机,一台主机两个显示器,教您电脑两个显示器怎么设置...
  13. android直播流渲染,Android手机直播之处理技术分析
  14. 如何用CANSLIM法则选股
  15. 实现字符串倒序并输出
  16. 【Java面试题】定义枚举类型Weekday,使用枚举类型配合switch语句,尝试如下功能:
  17. 八位一体共阴极数码管显示电子时钟+闹铃+温度检测
  18. JFlow工作流 流程与表单案例
  19. 【AIGC使用教程】论文阅读神器 SciSpace 从注册到体验
  20. c++代码实现我的世界(3)续

热门文章

  1. hadoop2.8.2 YARN 架构
  2. u盘显示请插磁盘f_为什么总是认不到U盘,打开显示成“请插入磁盘驱动器F”.
  3. 教师招聘计算机学科试题,2016年教师招聘考试《信息技术》练习试题二
  4. 解决跨域问题:给谷歌设置允许跨域
  5. verilog时钟分频设计
  6. UltraISO怎么用之使用软碟通UltraISO如何烧录windows 2012r2和Centos系统到U盘
  7. 新的目标已经出现,向着互联网反卷净土冲啊
  8. 记录一个CentOS 6版本中,yum install 命令无法实现的问题 # 谭子
  9. outlook登录企业邮箱和qq邮箱
  10. 解决小米pad USB安装apk时AS报错:INSTALL_FAILED_USER_RESTRICTED