新闻详情

Unix管道之美

编辑:上海马桶下水道疏通公司时间:2020-10-14

  Unix的哲学侧重于构建简单可扩展的软件。每个软件都要做一件事,但要把这件事做到极致,这个软件必须能够通用的界面(文本流)和其他程序一起工作。这是Unix的核心哲学之一,可以构建强大直观的软件生态系统。

  UNIX系统引进了许多创新的程序和技术,但一直遵循的也是有效的只有这个软件哲学思想。所有UNIX程序基本上都能独立完成琐碎的事情,并且善于与其他程序结合使用,成为通用有用的工具。

  本文介绍Unix下强大、程序间合作的工具管道。

  概述。

  管道是Unix系统过程中重要的通信机制之一。管道原理简单:在内存中创建共享文件,在通信过程中通过共享文件交换信息。该共享文件称为管道。管道由pipe函数制成,提供单向数据流。

  典型的shell命名为who|sort|lp。

  上述命令行中的|管道,利用管道将who的执行结果传递给sort进行排序,将排序结果传递给lp印刷。

  管道的例子。

  统计访问日志中非法访问最高的IP。

  网站的访问日志通常反映了网站现在的访问状态。例如,大量404状态的比例表明网站链接系统存在问题,指向不存在的网站,或者网站被渗透,或者使用扫描器渗透你的网站的特征(尝试访问Url)。此时,有必要找到这些IP并禁止它们。

  找到这样的IP常用命令之一是:

  grep404access.log|awk-{print$1}|sort|uniq-c|sort-nr|head-n10。

  以上命令行中有5条管道将6个工具处理链接成处理堆栈

  1用grep搜索access.log文件中的404状态。

  2用awk印刷检索结果(404状态的访问日志)时,第一列(默认用空格文字分割,第一列访问IP)。

  3使用sort对所有IP进行排名,这次sort是为下一步的uniq打下基础,uniq只会对比附近的行,所以如果不提前排序,结果会出现问题。

  4uniq-c重复项(IP),计数。

  5对uniq的结果进行排序-n表示数字排序(即uniq-c后的重复计数值),r表示逆序。

  6获得排名结果的前十项。

  结果如上,其中访问最高的IP是不正常的。我们是grep这个IP。

  grep1.69.180.223access.log。

  这就是扫描器,不断检测phpmyadmin。这个IP可以关闭,禁止也很简单。

  iptables-IINPUT-s1.69.180.223-jDROP。

  以上是利用管道和小工具进行日志分析和恶意攻击发现和处理的简单过程,整个过程简单明了。

  git仓库commit排名。

  举个简单的例子,通过git管理的项目获得提交的顺序,根据提交者的commit数进行顺序。以Linux核为例,首先从gitee的linux核仓库镜像克隆到当地。

  gitclonegit@gitee.com:mirrors/linux.git。

  gitlog用于显示提交日志。-format=期权用于筛选显示的信息。在这个例子中,我们只需要提交者,用-format=%an显示每次提交的名字。

  然后,我们必须重视统计次数,使用上一我们说的技术,首先是sort,然后是uniq-c。

  gitlog-format=%an|sort|uniq-c。

  有趣的是,核心里也有中文名字的提交者。他们中有你或你知道的吗?

  然后,根据统计的commit数量取得前20名提交者:sort-nr|head-n20。

  gitlog-format=%an|sort|uniq-c|sort-nr|head-n20。

  教主Linus是No.1的提交者,提交次数为30218,其次是DavidS.Miller,比较giteeWeb页面的comit统计。

  他的统计可能不是实时缓存,所以数量有些不同。

  调用githubApi接口获得自己的项目。

  Github中常见的操作之一是收藏fork,一段时间后,项目可能无法管理。幸运的是,github提供了API接口,可以通过调用该接口获得相关信息。例如,可以获得某用户的仓库列表并调用。

  api.github/users/用户名/repos。

  结果是json格式的数据,需要使用jq工具来分析数据。

  curlhttps://api.github.com/users/bollwarm/repos|jq[]|.full_name

  jq命令中的.[]表示循环获得列表,.full_name表示获得json的全名

  jq利用管道从标准输入中读取数据,实际上所有这样的API操作都可以以类似的形式处理。

  总结。

  本文介绍了Unix哲学思想武装下的工具管道,实例介绍了其用法,现实中有很多用法。抛砖引玉,使用这些小工具,完美解决自己的大问题。