awk高级高级

电脑杂谈  发布时间:2020-04-26 03:11:22  来源:网络整理

awk数组排序_awk数组排序_awk数组下标

[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"

失败是因为用户登录失败. 如果登录连续多次失败,则密码被强行使用.

/失败/关键字搜索

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

fa [$(NF-3)] ++使用数组来累积不同的IP类别

for(fa中的pol)for循环使用pol变量逐一提取fa [$(NF-3)]数组的内容.

print polawk数组排序,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
……

进行排序,将所有内容放在一起,uniq重复数据删除通常合并-c参数为count.

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

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

使用数组来计数不同的IP

类似于第一个问题,只有统计信息的位置更改为$ 1.

awk数组排序_awk数组下标_awk数组排序

[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

统计总数相对简单

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

i的累加,然后输出i的最后一个值.

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

统计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

查看数组元素的内容数组名称+数组元素下标

具有相同下标的数组可以一起使用.

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

awk'{count [$ 1] ++; sum [$ 1] + = $ 10} END {for(pol in sum)print pol,count [pol],sum [pol]}'access.log

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

awk数组下标_awk数组排序_awk数组排序

[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  流量:40254
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

对于数字awk数组排序,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

-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

如果现在有文本,格式如下:

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

同一字母后面的数字加在一起并按字母顺序输出.

将对数组进行分类计数,显示时可以显示数据统计结果以及数组名称即结果.

awk数组排序_awk数组下标_awk数组排序

[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

在这里,变量被写为数组.

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

某些公式的缩写:

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

在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

如何使用telnet [ip] [端口]

[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

[root@znix ~]# ss -lntup|grep 22
tcp    LISTEN     0      128                   :::22                   :::*      users:(("sshd",1140,4))
tcp    LISTEN     0      128                    *:22                    *:*      users:(("sshd",1140,3))

[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

awk数组下标_awk数组排序_awk数组排序

-i : 列出满足条件的进程. (4、6,协议,: 端口,@ 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)

如何使用: nc ip端口

[root@znix ~]# nc 10.0.0.201 22
SSH-2.0-OpenSSH_5.3

[root@clsn6 ~]# yum install  telnet tree  lrzsz  nmap nc  dos2unix    -y
[root@clsn6 ~]# yum install htop iotop iftop atop  nethogs -y 

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

树允许文件和目录以树的形式显示

lrzsz在linux和Windows之间相互传输文件

nmap强大的扫描工具

nc网络检测工具

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

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

IP地址显示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


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-189062-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...