awk巩固练习题

简介: 第1章 awk数组练习题 1.1 文件内容(仅第一行) [root@znix test]# head -1 secure-20161219 access.log ==> secure-20161219 access.

第1章 awk数组练习题

1.1 文件内容(仅第一行)

[root@znix test]# head -1 secure-20161219 access.log

==> secure-20161219 <==

Dec 11 03:49:25 localhost sshd[27087]: Failed password for invalid user support from 123.31.34.190 port 55493 ssh2

 

==> access.log <==

101.226.61.184 - - [22/Nov/2015:11:02:00 +0800] "GET /mobile/sea-modules/gallery/zepto/1.1.3/zepto.js HTTP/1.1" 200 24662 "http://m.oldboyedu.com.cn/mobile/theme/oldboy/home/index.html" "Mozilla/5.0 (Linux; U; Android 5.1.1; zh-cn; HUAWEI CRR-UL00 Build/HUAWEICRR-UL00) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025478 Mobile Safari/533.1 MicroMessenger/6.3.7.51_rbb7fa12.660 NetType/3gnet Language/zh_CN"

1.2 统计secure文件中谁在破解你的密码(统计出破解你密码的ip地址出现的次数)

1.2.1 方法一

Failed         是用户登陆失败,连续多次的登陆失败,就是在暴力破解密码。

/Failed/        关键词查找

$ (NF-3)       表示倒数第四列

fa[$(NF-3)]++ 使用数组,对不同的ip分类累加

for(pol in fa)    for循环 使用pol 变量,逐个的取出fa[$(NF-3)] 数组中的内容。

print pol,fa[pol] 显示数组的内容,以及pol的次数,即统计.

[root@znix test]# awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' secure-20161219|column -t

218.65.30.126    17163

218.65.30.61     17163

125.16.71.175    4

169.46.38.74     9

183.136.238.78   30

218.2.0.16       10

122.228.238.66   1

……

1.2.2 方法二

sort排序,把一样的都放在一起,uniq去重经常合并 -c 参数是计数.

[root@znix test]# awk '/Failed/{print $(NF-3)}' secure-20161219 |sort|uniq -c|sort -n

1.2.3 结果统计

[root@znix test]# awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' secure-20161219|column -t|wc -l

88

1.3 统计access.log文件中对ip地址去重并统计重复数

使用数组对不同的ip进行统计

与第一题类似,这里只是统计的位置改变,变为$1.

[root@znix test]# awk '{hotel[$1]++}END{for(pol in hotel)print pol,hotel[pol]}' access.log |head -3

101.226.125.115 284

180.154.137.177 516

101.226.125.116 127

1.4 统计access.log文件中网站一共使用了多少流量

统计总数较为简单

i=i+$10可以写为 i+=$10

i累计相加,然后再输出最后一个i的值即可。

[root@znix test]# awk '{i=i+$10}END{print i}' access.log

2478496663

1.5 统计access.log文件中每个ip地址使用了多少流量(一个栗子)

统计ip使用的流量,将每个ip归类,与上一题不同的是,上一题是统计次数,这是统计他的流量

hotel[$1]+=$10 可以写为 hotel[$1]=hotel[$1]+$10 让循环的时候相加的不是1,而是$10的数字,进而就可以得出每个ip使用的流量.

[root@znix test]#  awk '{hotel[$1]+=$10}END{for(pol in hotel)print pol,hotel[pol]}' access.log |sort -rnk2|head

114.83.184.139 31362956

117.136.66.10 22431302

116.216.30.47 21466000

223.104.5.197 21464856

116.216.0.60 19145329

114.141.164.180 17219553

114.111.166.22 17121524

223.104.5.202 16911512

116.228.21.187 15969887

112.64.171.98 15255013

1.6 统计access.log文件中,同一个ip的出现次数以及他使用的流量总数。

查看数组元素里面的内容 数组的名字+数组元素的下标

下标相同的数组,能够一起使用.

两个有关的数组,只要有一个共同使用的元素,可以在一个循环中使用.

[root@znix test]# awk '{count[$1]++;sum[$1]+=$10}END{for(pol in sum)print pol,count[pol],sum[pol]}' access.log |sort -rnk3|head |column -t

114.83.184.139   1982   31362956

117.136.66.10    1662   22431302

116.216.30.47    506    21466000

223.104.5.197    961    21464856

116.216.0.60     957    19145329

114.141.164.180  695    17219553

114.111.166.22   753    17121524

223.104.5.202    871    16911512

116.228.21.187   596    15969887

112.64.171.98    10856  15255013

1.6.1 [优化]让显示的结果更好看

[root@znix test]# awk '{count[$1]++;sum[$1]+=$10}END{for(pol in sum)print "ip:"pol,"次数:"count[pol],"流量:"sum[pol]}' access.log |sort -rnk3|head |column -t

ip:70.39.157.199   次数:1   流量:16049

ip:70.39.157.198   次数:1   流量:15965

ip:70.39.157.195   次数:1   流量:1569

ip:68.180.230.250  次数:5   流量:40644

ip:66.249.82.96    次数:30  流量:402543

ip:66.249.82.93    次数:36  流量:358729

ip:66.249.82.90    次数:61  流量:1640266

ip:66.249.82.185   次数:1   流量:1569

ip:66.249.82.181   次数:3   流量:258284

ip:66.249.82.177   次数:6   流量:374716

1.7 sort命令

1.7.1 sort默认是按照字母的顺序排序。

对与数字来说,sort命令将他一视同仁,按照顺序进行排序

[root@znix test]# seq 20|sort

1

10

11

12

13

14

15

16

17

18

19

2

20

3

4

5

6

7

8

9

1.7.2 sort命令的其他参数

-n 表示,将内容视为数字,能按照数字顺序进行排列

-r 表示逆序排列

-k 指定按照哪一列的顺序进行排列。

[root@znix test]# seq 20|sort -rnk1

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

 

1.8 对于统计IP使用的流量的一个栗子.

假如现在有个文本,格式如下:

a  1

b  3

c  2

d  7

b  5

a  3

g  2

f  6

d  9

即左边是随机字母,右边是随机数字,要求写个脚本使其输出格式为:

a  4

b  8

c  2

d  16

f  6

g  2

即将相同的字母后面的数字加在一起,按字母的顺序输出。

1.8.1 使用数组进行统计

数组会进行分类计数,显示的时候可以显示数据统计的结果,与数组的名字,即结果.

[root@znix files]# awk '{a[$1]=a[$1]+$2}END{for(i in a)print i,a[i]}' w.txt

a 4

b 8

c 2

d 16

f 6

g 2

1.8.2 变量的不同形式

这里将变量写为数组而已.

{i=i+$2}

{hotel[$1]=hotel[$1]+$2}

一些式子的简写:

i++   ====>>  i=i+1

i+=2  ====>>  i=i+2

i+=$1 ====>>  i=i+$1

1.9 awk中一些其他的命令

awk里面使用 |" "  里面加上命令即可

sort 命令放在后面进行排序会将BEGIN的内容也会排序

awk循环中进行排序,就不会贵BEGIN 的内容产生影响

[root@znix test]# awk 'BEGIN{print "ip","count"}{count[$1]++}END{for(pol in count)print pol,count[pol]|"sort -rnk2"}' access.log  |head |column -t

ip              count

58.220.223.62   12049

112.64.171.98   10856

114.83.184.139  1982

117.136.66.10   1662

115.29.245.13   1318

223.104.5.197   961

116.216.0.60    957

180.111.48.14   939

223.104.5.202   871

第2章 回顾补充

2.1 远程连接连不上了之检查端口

2.1.1 方法一telnet

使用方法  telnet  [ip]  [port]

[f:\~]$ telnet 10.0.0.201 22

 

 

Connecting to 10.0.0.201:22...

Connection established.

To escape to local shell, press 'Ctrl+Alt+]'.

SSH-2.0-OpenSSH_5.3

2.1.2 方法二 ss -lntup

[root@znix ~]# ss -lntup|grep 22

tcp    LISTEN     0      128                   :::22                   :::*      users:(("sshd",1140,4))

tcp    LISTEN     0      128                    *:22                    *:*      users:(("sshd",1140,3))

2.1.3 方法三 强大的nmap

[root@znix test]# nmap -p22 10.0.0.201

 

Starting Nmap 5.51 ( http://nmap.org ) at 2017-09-22 11:10 CST

Nmap scan report for 10.0.0.201

Host is up (0.000072s latency).

PORT   STATE SERVICE

22/tcp open  ssh

 

Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds

2.1.4 方法四 lsof -i:22

-i<条件>:列出符合条件的进程。(46、协议、:端口、 @ip

 [root@znix ~]# lsof -i:22

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

sshd    1140 root    3u  IPv4  10300      0t0  TCP *:ssh (LISTEN)

sshd    1140 root    4u  IPv6  10302      0t0  TCP *:ssh (LISTEN)

sshd    1334 root    3u  IPv4  11050      0t0  TCP 10.0.0.201:ssh->10.0.0.1:42256 (ESTABLISHED)

sshd    1700 root    3u  IPv4  12198      0t0  TCP 10.0.0.201:ssh->10.0.0.1:42772 (ESTABLISHED)

2.1.5 方法五 nc

使用方法: nc ip port

[root@znix ~]# nc 10.0.0.201 22

SSH-2.0-OpenSSH_5.3

2.2 linux中要安装的一些软件

[root@znix ~]#  yum install  telnet tree  lrzsz  nmap nc  dos2unix    -y

       telnet 远程连接服务,可以进行测试

       tree   让文件,目录以树的形式显示

       lrzsz  linuxwindows文件相互传递

       nmap 强大的扫描工具

       nc   网络探测工具

       dos2unix dos格式的文本转换为unix格式

2.3 查看系统网关的方法 ip命令

2.3.1 查看系统的网关

ip r ip route 相同

[root@znix test]# ip r

10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.201

169.254.0.0/16 dev eth0  scope link  metric 1002

default via 10.0.0.2 dev eth0

2.3.2 参看网卡的详细-IP地址

ip address show eth0  ip a s eth0 相同。

[root@znix test]# ip address show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:a8:e4:14 brd ff:ff:ff:ff:ff:ff

    inet 10.0.0.201/24 brd 10.0.0.255 scope global eth0

    inet6 fe80::20c:29ff:fea8:e414/64 scope link

       valid_lft forever preferred_lft forever

2.4 面试题 ps aux 里面的vsz rss 区别

vsz  虚拟内存(物理+swap)

rss  是物理内存

目录
相关文章
|
Python
正则表达前一个元素出现零次或多次
正则表达前一个元素出现零次或多次
517 3
|
数据采集 数据可视化 关系型数据库
基于Python 爬虫的房地产数据可视化分析与实现
本文介绍了一个基于Python爬虫的房地产数据可视化分析系统,该系统通过BeautifulSoup框架采集房源信息、使用pandas进行数据处理、MySQL存储数据,并利用pyechart实现数据可视化,帮助用户高效获取和分析房源数据,从而做出更明智的购房决策。
896 1
基于Python 爬虫的房地产数据可视化分析与实现
|
云安全 弹性计算 安全
云上攻防:实例元数据、控制台接管
随着企业上云趋势增强,云安全成为焦点。云服务提供高效的数据存储和计算能力,但也带来数据保护和访问控制的新挑战。攻击者常利用云服务漏洞,威胁企业数据安全。本文探讨云上攻防关键领域,如元数据泄露、AKSK安全、控制台接管等,提出防御措施,帮助企业应对云安全风险。
574 2
云上攻防:实例元数据、控制台接管
|
存储 关系型数据库 MySQL
MySQL中的索引及怎么使用
综上所述,MySQL索引的正确使用是数据库性能调优的关键一环。通过合理设计索引结构,结合业务需求和数据特性,可以有效提升数据库查询响应速度,降低系统资源消耗,从而确保应用的高效运行。
302 1
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
29694 18
|
API UED
逆向海淘代购集运系统方案:lete淘宝代购集运系统丨1688代采系统
**淘宝代购集运系统**整合多平台商品资源,提供代购、仓储、国际运输一站式服务。通过API接口实现商品实时同步,支持多种支付方式与国际物流,确保用户跨地域便利购物。系统涵盖订单管理、多语言支持、客服及营销功能,通过技术创新提升用户体验和满意度。关键点包括市场定位、支付物流体系构建、用户体验优化和API集成,助力海外用户轻松购买中国商品。
wireshark 报文颜色
wireshark 报文颜色
2229 8
|
算法 vr&ar UED
硬核解决Sora的物理bug!美国四所顶尖高校联合发布:给视频生成器装个物理引擎
【5月更文挑战第16天】美国四所顶级高校联合推出PhysDreamer,将物理引擎集成到视频生成模型,以实现更真实的3D对象动态交互。该技术利用动态先验知识估计物体物理属性,生成逼真的动态视频。实验显示PhysDreamer在动态逼真度上超越现有方法,但在计算成本和处理复杂物理交互方面仍有局限。研究团队对未来持乐观态度,期待改善效率并扩展应用范围。这一创新将推动虚拟体验技术的发展,增强VR/AR的沉浸感和多领域应用。[论文链接](https://arxiv.org/pdf/2404.13026.pdf)
247 2
|
前端开发 Java 关系型数据库
使用SSM实现网上购物商城系统
本项目基于SSM框架( spring+springmvc+mybatis)进行开发实现,数据库采用MYSQL,开发工具为IDEA或ECLIPSE均可。系统包含商城前端功能和后端管理功能,前端主要实现了用户注册、登陆、商品查看、添加购物车、生成订单、模拟支付等功能。后台管理功能主要包含用户管理、产品类型管理、产品管理、订单管理、销量统计等功能。功能完整,运行无误,适合做毕业设计或课程设计使用。
674 0
使用SSM实现网上购物商城系统
|
XML 缓存 搜索推荐
RSS 解析:全球内容分发的利器及使用技巧
RSS(Really Simple Syndication)是一种 XML 格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS 文档结构包括 `&lt;channel&gt;` 和 `&lt;item&gt;` 元素,允许内容创作者分享标题、链接和描述。通过 RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RSS 支持不同版本,如 RSS 0.91 和 RSS 2.0,其中 RSS 2.0 语法简单且广泛使用。RSS 提高网站流量,适用于新闻、博客、日历等频繁更新的站点。RSS 的历史始于 1997 年,至今仍无官方标准,但已成为内容共享的重要工具。
996 0
下一篇
oss云网关配置