[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"
Failed 是用戶登錄失敗,連續屢次的登錄失敗,就是在暴力破解密碼。html
/Failed/ 關鍵詞查找linux
$ (NF-3) 表示倒數第四列面試
fa[$(NF-3)]++ 使用數組,對不一樣的ip分類累加shell
for(pol in fa) for循環 使用pol 變量,逐個的取出fa[$(NF-3)] 數組中的內容。windows
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 ……
sort排序,把同樣的都放在一塊兒,uniq去重常常合併 -c 參數是計數.網絡
[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進行統計ssh
與第一題相似,這裏只是統計的位置改變,變爲$1.tcp
[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
[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
對與數字來講,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
即將相同的字母后面的數字加在一塊兒,按字母的順序輸出。
數組會進行分類計數,顯示的時候能夠顯示數據統計的結果,與數組的名字,即結果.
[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] [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
[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
-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 port
[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 遠程鏈接服務,能夠進行測試
tree 讓文件,目錄以樹的形式顯示
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 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
vsz 虛擬內存(物理+swap)
rss 是物理內存