6

第二十四章? shell中色彩處理和awk使用技巧

?

本節(jié)所講內(nèi)容:

24.1? shell中的色彩處理

24.2? awk基本應(yīng)用

24.3? awk高級(jí)應(yīng)用

24.4? 實(shí)戰(zhàn)-shell腳本實(shí)戰(zhàn)

?

24.1? Shell中的色彩處理

shell腳本中echo顯示內(nèi)容帶顏色顯示,echo顯示帶顏色纳决,需要使用參數(shù)-e

格式1:echo -e “\033[背景顏色;文字顏色m 要輸出的字符\033[0m”

格式2:echo -e “\e[背景顏色;文字顏色m要輸出的字符\e[0m”

例:綠底藍(lán)字

[root@xuegod63 ~]# echo-e "\033[42;34mhello world\033[0m"

[root@xuegod63 ~]# echo-e "\e[42;34mhello world\e[0m"

如圖:

??? 注:其中42的位置代表底色,34的位置代表的是字的顏色乡小,0m是清除所有格式

1阔加、字背景顏色和文字顏色之間是英文的分號(hào)";"

2、文字顏色后面有個(gè)m

3满钟、字符串前后可以沒有空格胜榔,如果有的話胳喷,輸出也是同樣有空格

4、echo顯示帶顏色苗分,需要使用參數(shù)-e

,-e 允許對(duì)下面列出的加反斜線轉(zhuǎn)義的字符進(jìn)行解釋.

?

控制選項(xiàng):

\033[0m 關(guān)閉所有屬性

\033[1m 設(shè)置高亮度厌蔽,加粗

\033[5m 閃爍

[root@xuegod63 ~]# echo-e "\e[42;34mhello world\e[5m"? #執(zhí)行后,發(fā)現(xiàn)后期所有輸出都閃爍狀態(tài)摔癣,如何關(guān)閉奴饮?

[root@xuegod63~]# echo -e "\e[42;34mhello world\e[0m"?? #可以使用\033[0m 關(guān)閉所有屬性

?

常見shell輸入帶顏色文字:? 3x代表字的顏色,4x代表背景色

echo -e "\033[30m 黑色字\033[0m"

echo -e "\033[31m 紅色字\033[0m"

echo -e "\033[32m 綠色字\033[0m"

echo -e "\033[33m 黃色字\033[0m"

echo -e "\033[34m 藍(lán)色字\033[0m"

echo -e "\033[35m 紫色字\033[0m"

echo -e "\033[36m 天藍(lán)字\033[0m"

echo -e "\033[37m 白色字\033[0m"

echo -e

"\033[40;37m 黑底白字\033[0m"

echo -e

"\033[41;37m 紅底白字\033[0m"

echo -e

"\033[42;37m 綠底白字\033[0m"

echo -e

"\033[43;37m 黃底白字\033[0m"

echo -e "\033[44;37m藍(lán)底白字\033[0m"

echo -e

"\033[45;37m 紫底白字\033[0m"

echo -e

"\033[46;37m 天藍(lán)底白字\033[0m"

echo -e

"\033[47;30m 白底黑字\033[0m"

?

24.2? awk基本應(yīng)用

grep和egrep:文本過濾的

sed:流編輯器择浊,實(shí)現(xiàn)編輯的

awk:文本報(bào)告生成器戴卜,實(shí)現(xiàn)格式化文本輸出

24.2.1? 概念

AWK是一種優(yōu)良的文本處理工具,Linux及Unix環(huán)境中現(xiàn)有的功能最強(qiáng)大的數(shù)據(jù)處理引擎之一琢岩。這種編程及數(shù)據(jù)操作語言的最大功能取決于一個(gè)人所擁有的知識(shí)投剥。awk命名:Alfred Aho Peter 、Weinberger和brian kernighan三個(gè)人的姓的縮寫担孔。

awk---->gawk 即:gun awk

在linux上常用的是gawk,awk是gawk的鏈接文件

man gawk----》pattern scanning and processing language? 模式掃描和處理語言江锨。

pattern [?p?tn]? 模式???;process [?pr??ses]處理

任何awk語句都是由模式和動(dòng)作組成糕篇,一個(gè)awk腳本可以有多個(gè)語句啄育。模式?jīng)Q定動(dòng)作語句的觸發(fā)條件和觸發(fā)時(shí)間。

模式:

正則表達(dá)式:?? /root/匹配含有root的行???? ?????? /*.root/

關(guān)系表達(dá)式:?? <?>? &&? ||?? +? *

匹配表達(dá)式:?? ~? 拌消!~

動(dòng)作:

變量? 命令? 內(nèi)置函數(shù)? 流控制語句

它的語法結(jié)構(gòu)如下:

awk [options] 'BEGIN{ print "start" }‘pattern{ commands }’END{ print

"end" }'file

其中:BEGIN? END是AWK的關(guān)鍵字部挑豌,因此必須大寫;這兩個(gè)部分開始?jí)K和結(jié)束塊是可選的

特殊模塊:

BEGIN語句設(shè)置計(jì)數(shù)和打印頭部信息墩崩,在任何動(dòng)作之前進(jìn)行

END語句輸出統(tǒng)計(jì)結(jié)果氓英,在完成動(dòng)作之后執(zhí)行

?

通過上面我們可以知道;AWK它工作通過三個(gè)步驟

1、讀:從文件鹦筹、管道或標(biāo)準(zhǔn)輸入中讀入一行然后把它存放到內(nèi)存中

2铝阐、執(zhí)行:對(duì)每一行數(shù)據(jù),根據(jù)AWK命令按順序執(zhí)行盛龄。默認(rèn)情況是處理每一行數(shù)據(jù)饰迹,也可以指定模式

3、重復(fù):一直重復(fù)上述兩個(gè)過程直到文件結(jié)束

AWK支持兩種不同類型的變量:內(nèi)建變量余舶,自定義變量

awk內(nèi)置變量(預(yù)定義變量)

[if !supportLists]ü? [endif]$n 當(dāng)前記錄的第n個(gè)字段,比如: $1表示第一個(gè)字段锹淌,$2表示第二個(gè)字段

[if !supportLists]ü? [endif]$0 這個(gè)變量包含執(zhí)行過程中當(dāng)前行的文本內(nèi)容

[if !supportLists]ü? [endif]FILENAME 當(dāng)前輸入文件的名

[if !supportLists]ü? [endif]FS 字段分隔符(默認(rèn)是空格)

[if !supportLists]ü? [endif]NF 表示字段數(shù)匿值,在執(zhí)行過程中對(duì)應(yīng)于當(dāng)前的字段數(shù),NF:列的個(gè)數(shù)

[if !supportLists]ü? [endif]FNR? 各文件分別計(jì)數(shù)的行號(hào)

[if !supportLists]ü? [endif]NR 表示記錄數(shù)赂摆,在執(zhí)行過程中對(duì)應(yīng)于當(dāng)前的行號(hào)

[if !supportLists]ü? [endif]OFS 輸出字段分隔符(默認(rèn)值是一個(gè)空格)

[if !supportLists]ü? [endif]ORS 輸出記錄分隔符(默認(rèn)值是一個(gè)換行符)

[if !supportLists]ü? [endif]RS 記錄分隔符(默認(rèn)是一個(gè)換行符)

24.2.2? 實(shí)例演示

常用的命令選項(xiàng):

???????? -F? fs指定分隔符

???????? -v賦值一個(gè)用戶自定義變量

???????? -f指定腳本文件,從腳本中讀取awk命令

(1)分隔符的使用

用法:-Ffs 其中fs是指定輸入分隔符挟憔,fs可以是字符串或正則表達(dá)式;分隔符默認(rèn)是空格

常見寫法:-F:?? -F,?-F[Aa]

例1:

[root@xuegod63 ~]# echo"AA BB CC DD"|awk '{print $2}'

BB

[root@xuegod63 ~]# echo"AA|BB|CC|DD"|awk -F"|" '{print $2}'

BB

[root@xuegod63 ~]# echo"AA,BB,CC,DD"|awk -F"," '{print $2}'

BB

[root@xuegod63 ~]# echo"AA,BB,CC,DD"|awk -F, '{print $2}'

BB

[root@xuegod63 ~]# awk-F: '{print $1}' /etc/passwd? #以:分隔钟些,打印第1列用戶名

例2:指定多個(gè)分隔符

[root@xuegod63 ~]# echo"12AxAbADXaAD52" | awk -F"[aA]" '{print $6}'

D52

例3:使用FS指定分隔符

[root@xuegod63 ~]# echo"12AxAbADXaAD52" | awk 'BEGIN {FS="aA"}{print $2}'

D52

?

例4:過濾出本系統(tǒng)的IP地址

[root@xuegod63 ~]#ifconfig ens33 | grep netmask

??????? inet 192.168.1.63? netmask 255.255.255.0? broadcast 192.168.1.255

[root@xuegod63 ~]#ifconfig ens33 | grep netmask | awk '{print $2}'

192.168.1.63

?

(2)關(guān)系運(yùn)算符的使用

例1:

[root@xuegod63 ~]# echo"3 2 3 4 5" > a.txt

[root@xuegod63 ~]# awk'{print $1+10}'? a.txt

13

例2:

[root@xuegod63 ~]# echo"one two three four" | awk '{print $4}'

four

[root@xuegod63 ~]# echo"one two three four" | awk '{print $NF}'

four

[root@xuegod63 ~]# echo"one two three four" | awk '{print $(NF-2)}'? #打印倒數(shù)第3列

two

[root@xuegod63 ~]# echo"one two three four" | awk '{print $(NF/2-1)}'

one

例2:打印出passwd文件中用戶UID小于10的用戶名和它登錄使用的shell

參數(shù):$NF 最后一列

[root@xuegod63 ~]# awk-F: '$3<10{print $1 $NF}' /etc/passwd?#直接輸出格式太亂

root/bin/bash

bin/sbin/nologin

daemon/sbin/nologin

adm/sbin/nologin

lp/sbin/nologin

sync/bin/sync

shutdown/sbin/shutdown

halt/sbin/halt

mail/sbin/nologin

[root@xuegod63 ~]# awk

-F: '$3<10{print $1 "<======>" $NF}' /etc/passwd #awk格式化輸出

root<======>/bin/bash

bin<======>/sbin/nologin

daemon<======>/sbin/nologin

在$1和$NF之間加一下\t tab

[root@xuegod63 ~]# awk-F: '$3<10{print $1"\t"$NF}'/etc/passwd?

注:awk 最外面使用了單引號(hào)'' ,里面都使用雙引號(hào)“”

?

.輸出多個(gè)列時(shí),可以加绊谭,分隔一下.

[root@xuegod63 ~]# awk-F: '$3<10{print $1,$NF}' /etc/passwd

?

例2:打印出系統(tǒng)中UID大于1000且登錄shell是/bin/bash的用戶

[root@xuegod63 ~]#? awk -F: '$3>=1000 &&$NF=="/bin/bash"{print $1"\t"$NF}' /etc/passwd

mk?? /bin/bash

?

(3)在腳本中的一些應(yīng)用

例:統(tǒng)計(jì)當(dāng)前內(nèi)存的使用率

[root@xuegod63 ~]#

[root@xuegod63 ~]# catuser_cache.sh

#!/bin/bash

echo "當(dāng)前系統(tǒng)內(nèi)存使用百分比為:"

USEFREE=`free -m | grep-i mem | awk '{print $3/$2*100"%"}'`

echo -e "內(nèi)存使用百分比:\e[31m${USEFREE}\e[0m"

?

[root@xuegod63 ~]# bashuser_cache.sh

?

24.3? awk高級(jí)應(yīng)用

命令格式:

awk?[-F | -f | -v ] ‘BEGIN {} / /{command1;command2} END {}’file

???????? -F????????????? 指定分隔符

???????? -f????????????? 調(diào)用腳本

???????? -v????????????? 定義變量

???????? ‘{}’?????? 引用代碼塊

? ???{…}?????????? 命令代碼塊政恍,包含一條或多條命令

???????? BEGIN???? 初始化代碼塊

???????? / str /??????????????? 匹配代碼塊,可以是字符串或正則表達(dá)式

???????? {print A达传;printB}?????????? 多條命令使用分號(hào)分隔

???????? END????????????????? 結(jié)尾代碼塊

在awk中篙耗,pattern有以下幾種:

[if !supportLists]1)? [endif]empty空模式,這個(gè)也是我們常用的

[if !supportLists]2)? [endif]/regular expression/? 僅處理能夠被這個(gè)模式匹配到的行

例:打印以root開頭的行

[root@xuegod63 ~]# awk-F: '/^root/{print $0}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

?

3) 行范圍匹配startline,endline

例1:輸出行號(hào)大于等于3且行號(hào)小于等于6的行

[root@xuegod63 ~]# awk-F: '(NR>=3&&NR<=6){print NR,$0}' /etc/passwd

3daemon:x:2:2:daemon:/sbin:/sbin/nologin

4 adm:x:3:4:adm:/var/adm:/sbin/nologin

5lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6sync:x:5:0:sync:/sbin:/bin/sync

內(nèi)置變量的特殊用法:

[if !supportLists]ü? [endif]$0? ? ? 表示整個(gè)當(dāng)前行

[if !supportLists]ü? [endif]NF? ? 字段數(shù)量??? NF(Number數(shù)量;? field字段)

[if !supportLists]ü? [endif]NR? ? ?每行的記錄號(hào)宪赶,多文件記錄遞增?? Record [?rek?:d]

[if !supportLists]ü? [endif]\t ?

? ? ?制表符

[if !supportLists]ü? [endif]\n? ? ?換行符

[if !supportLists]ü? [endif]~ ?

? ? ?匹配

[if !supportLists]ü? [endif]!~ ?

? ?不匹配

[if !supportLists]ü? [endif]-F'[:#/]+' ?定義三個(gè)分隔符

?

例1:使用NR行號(hào)來定位宗弯,然后提取IP地址

注:這個(gè)思路很好,之前都是通過過濾關(guān)鍵字來定位搂妻,這次是通過行號(hào)蒙保,多了一種思路

[root@xuegod63 ~]#ifconfig ens33 | awk -F " " 'NR==2{print $2} '

192.168.1.63

注:NR==2表示行號(hào)

例2:NR與FNR的區(qū)別

[root@xuegod63 ~]# awk'{printNR"\t" $0}' /etc/hosts/etc/hostname

1?????? 127.0.0.1?? localhost localhost.localdomain localhost4localhost4.localdomain4

2?????? ::1???????? localhost localhost.localdomainlocalhost6 localhost6.localdomain6

3?????? 192.168.1.63?? xuegod63.cn

4?????? 192.168.1.64?? xuegod64.cn

5?????? 192.168.1.64?? xuegod62.cn

6??????

7?????? xuegod63.cn

[root@xuegod63 ~]# awk'{print FNR"\t" $0}' /etc/hosts /etc/hostname

1?????? 127.0.0.1?? localhost localhost.localdomain localhost4localhost4.localdomain4

2?????? ::1???????? localhost localhost.localdomainlocalhost6 localhost6.localdomain6

3?????? 192.168.1.63?? xuegod63.cn

4?????? 192.168.1.64?? xuegod64.cn

5?????? 192.168.1.64?? xuegod62.cn

6??????

1?????? xuegod63.cn

注:對(duì)于NR來說,在讀取不同的文件時(shí)欲主,NR是一直加的 邓厕;

對(duì)于FNR來說,在讀取不同的文件時(shí)扁瓢,它讀取下一個(gè)文件時(shí)详恼,F(xiàn)NR會(huì)從1開始重新計(jì)算的

?

例3:使用3種方法去除首行

方法1:[root@xuegod63 ~]# route -n | grep -v ^Kernel

Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface

0.0.0.0???????? 192.168.1.1???? 0.0.0.0???????? UG???100??? 0??????? 0 ens33

192.168.1.0???? 0.0.0.0???????? 255.255.255.0?? U????100??? 0??????? 0 ens33

192.168.122.0??0.0.0.0???????? 255.255.255.0?? U????0????? 0??????? 0 virbr0

方法2:sed? 1d #刪除第1行的內(nèi)容

[root@xuegod63 ~]#route -n | sed 1d

方法3:awk

[root@xuegod63 ~]#route -n | awk 'NR!=1 {print $0}'

?

例4:匹配,使用awk查出以包括root字符的行 涤妒, 有以下3種方法

[root@xuegod63 ~]# awk-F: "/root/{print}" /etc/passwd

[root@xuegod63 ~]# awk-F: "/root/" /etc/passwd

[root@xuegod63 ~]# awk-F: '/root/{print $0}' /etc/passwd

做一個(gè)不匹配root行:

[root@xuegod63 ~]# awk-F: '!/root/{print $0}' /etc/passwd

以root開頭的行:

[root@xuegod63 ~]# awk-F: '/^root/{print $0}' /etc/passwd

以bash結(jié)尾的行:

[root@xuegod63 ~]# awk-F: '/bash$/{print $0}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

mk:x:1000:1000:mk:/home/mk:/bin/bash

?

?

=====以下知識(shí)单雾,大家了解一下======

例5:條件表達(dá)式

表達(dá)式?if-true:if-false問號(hào)前面是條件,如果條件為真執(zhí)行if-true,為假執(zhí)行if-false

例1:如果passwd中UID小于10她紫,則給變量USER賦值成aaa硅堆,否則賦值成bbb

[root@xuegod63 ~]# awk-F: '{$3<10? USER="aaa":USER="bbb";print $1,USER}'/etc/passwd

root aaa

bin aaa

daemon aaa

adm aaa

lp aaa

sync aaa

shutdown aaa

halt aaa

mail aaa

operator bbb

。贿讹。渐逃。

?

用if(條件){命令1;命令2}elif(條件){命令民褂;}else{命令}中茄菊,在比較條件中用( )擴(kuò)起來,在AWK中赊堪,如果條件為1為真面殖,0為假

例:如果UID大于10 ,則輸出user=>用戶名哭廉,否則輸出pass=>用戶名

[root@xuegod63 ~]# awk-F: '{if($3<10){print "user=>"$1}else{print"pass=>"$1}}' /etc/passwd

user=>root

user=>bin

user=>daemon

user=>adm

user=>lp

user=>sync

user=>shutdown

user=>halt

user=>mail

pass=>operator

?

~ ? ? ? ?匹配

!~ ? ? ?不匹配

例:查出行號(hào)小于等于5且包括bin/bash的行

[root@xuegod63 ~]#? awk -F: '{if($3<=5 && $NF ~"bin/bash"){print $1,$NF}}' /etc/passwd

root /bin/bash

?

例6:變量

[if !supportLists]1)??[endif]用-v指定? var=value變量名區(qū)分大小寫的

[if !supportLists]2)??[endif]在程序中直接定義

[if !supportLists]3)??[endif]在awk里脊僚,使用變量不用加$符號(hào)。

[root@xuegod63 ~]#var="test"

[root@xuegod63 ~]# awk'BEGIN{print "'$var'"}'? #引用變量時(shí)遵绰,使用單引號(hào)+雙引號(hào)括起來

test

?

例7:格式化輸出

printf命令:格式化輸出? printf “FORMAT”,item1,item2.......

format使用注意事項(xiàng):

1辽幌、其與print命令的最大不同是增淹,printf需要指定format樣式

2、format用于指定后面的每個(gè)item的輸出格式

3乌企、printf語句不會(huì)自動(dòng)打印換行符虑润;\n

4、format格式的指示符都以%開頭加酵,后跟一個(gè)字符拳喻;如下:

%c: 顯示字符的ASCII碼

%d,

%i:十進(jìn)制整數(shù)

%e, %E:科學(xué)計(jì)數(shù)法顯示數(shù)值

%f:顯示浮點(diǎn)數(shù)

%g, %G: 以科學(xué)計(jì)數(shù)法的格式或浮點(diǎn)數(shù)的格式顯示數(shù)值;

%s: 顯示字符串

%u: 無符號(hào)整數(shù)

%%: 顯示%自身

例1:輸入passwd文件中的第1列內(nèi)容虽画,輸出時(shí)不會(huì)換行

[root@xuegod63 ~]#? awk -F: '{printf "%s",$1}'/etc/passwd? ##不會(huì)自動(dòng)換行

rootrootbindaemonadmlpsyncshutdownhaltmailoperatorgamesftpnobodysystemd-networkdbuspolkitdabrtlibstoragemgmtrpccolordsaslauthrtkitchronyqemutssusbmuxdgeocluerpcusernfsnobodyradvdsetroubleshootpulsegdmgnome-initial-setupsshdavahipostfixntptcpdumpmk[root@xuegod63 ~]#

例2:換行輸出

[root@xuegod63 ~]# awk-F: '{printf "%s\n",$1}' /etc/passwd

例3:在輸出的字母前面添加自定義字符串USERNAME:

[root@xuegod63 ~]# awk-F: '{printf "USERNAME: %s\n",$1}' /etc/passwd?

USERNAME: root

USERNAME: bin

USERNAME: daemon

USERNAME: adm

例4:對(duì)$1和$NF都做格式化輸出

[root@xuegod63 ~]# awk-F: '{printf "USERNAME: %s %s\n",$1,$NF}' /etc/passwd

USERNAME: root/bin/bash

USERNAME: bin/sbin/nologin

USERNAME: daemon/sbin/nologin

例5:對(duì)$1和$NF都做格式化輸出舞蔽,在$1和$NF兩者之間添加一串====字符進(jìn)行輸入

[root@xuegod63 ~]# awk-F: '{printf "USERNAME: %s=========%s\n",$1,$NF}'/etc/passwdUSERNAME: root=========/bin/bash

USERNAME:bin=========/sbin/nologin

?

awk修飾符:

N: 顯示寬度;

-: 左對(duì)齊码撰;

一個(gè)字母占一個(gè)寬度渗柿。默認(rèn)是右對(duì)齊

?

例1:顯示時(shí)用10個(gè)字符串右對(duì)齊顯示。如果要顯示的字符串不夠10個(gè)寬度脖岛,以字符串的左邊自動(dòng)添加朵栖。一個(gè)字母占一個(gè)寬度。默認(rèn)是右對(duì)齊

[root@xuegod63~]# awk -F":" '{printf "%10s\n",$1}'? /etc/passwd

例2:使用10個(gè)寬度柴梆,左對(duì)齊顯示

[root@xuegod63~]# awk -F":" '{printf "%-10s\n",$1}'? /etc/passwd

root?????

bin??????

daemon???

adm??????

lp??

?

例3:第1列使用15個(gè)字符寬度左對(duì)齊輸出陨溅,最后一列使用15個(gè)字符寬度右對(duì)齊輸出

[root@xuegod63 ~]# awk-F: '{printf "USERNAME: %-15s %15s\n",$1,$NF}' /etc/passwd

USERNAME: root????????????????? /bin/bash

USERNAME: bin?????????????? /sbin/nologin

?

例4:使用開始和結(jié)束模塊來格式化輸出

[root@xuegod63 ~]# cattest.awk

BEGIN{

???????? print "UserId\t\t\tShell"

???????? print "-------------------------------"

???????? FS=":"

???????? }

$3>=500 &&$NF=="/sbin/nologin"{

???????? printf "%-20s %-20s\n",$1,$NF?

???????? }

END{

???????? print "--------------------------------"

???????? }

[root@xuegod63 ~]# awk-f test.awk /etc/passwd

UserId?????????????????????? Shell

-------------------------------

polkitd????????????? /sbin/nologin??????

libstoragemgmt?????? /sbin/nologin??????

colord?????????????? /sbin/nologin??????

saslauth???????????? /sbin/nologin??????

chrony?????????????? /sbin/nologin??????

geoclue????????????? /sbin/nologin??????

nfsnobody??????????? /sbin/nologin??????

setroubleshoot?????? /sbin/nologin??????

gnome-initial-setup? /sbin/nologin??????

--------------------------------

?

?

?

24.4? 實(shí)戰(zhàn)-shell腳本實(shí)戰(zhàn)

24.4.1? 檢查服務(wù)器是否受到DDOS攻擊腳本

思路:通過:netstat? 查看網(wǎng)絡(luò)連接數(shù)。如果一個(gè)IP地址對(duì)服務(wù)器建立很多連接數(shù)(比如一分鐘產(chǎn)生了100個(gè)連接)绍在,就認(rèn)為發(fā)生了DDOS

搭建環(huán)境:

[root@xuegod63~]# yum install httpd -y?#安裝apache

[root@xuegod63~]# systemctl start httpd?#啟動(dòng)服務(wù)

[root@xuegod63~]# echo "xuegod" > /var/www/html/index.html?#創(chuàng)建apache默認(rèn)網(wǎng)站首頁

?

[root@xuegod63~]# vim?ddos-test.sh??#寫入以下內(nèi)容

#!/bin/bash

netstat-ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

?

注釋:

netstat-ntu | awk '{print $5}' | cut -d: -f1???| sort | uniq -c | sort -n

???????????

????????????? 截取外網(wǎng)IP和端口???? 截取外網(wǎng)的IP以:為分隔符?|排序 | 排除相同的記錄?| 排序并統(tǒng)計(jì)

?

測(cè)試门扇,模擬DDOS

ab命令:做壓力測(cè)試的工具和性能的監(jiān)控工具

語法:ab? -n要產(chǎn)生的鏈接數(shù)總和?? -c同時(shí)打開的客戶端數(shù)量? http://鏈接

安裝ab命令:

[root@xuegod63~]# rpm -qf `which? ab `? #這個(gè)安裝apache時(shí),會(huì)自動(dòng)安裝上

httpd-tools-2.2.15-15.el6.x86_64

模擬DDOS:?jiǎn)?dòng)10個(gè)客戶端對(duì)網(wǎng)站首頁發(fā)起1000次訪問

[root@xuegod64~]# ab -n 1000 -c 10 http://192.168.1.63/index.html?

互動(dòng): 如果你要對(duì)方發(fā)生DDOS攻擊偿渡,你會(huì)攻擊什么樣的頁面臼寄?

#訪問一個(gè)頁面比較大,頁面越大溜宽,消耗服務(wù)器帶寬就越大吉拳,攻擊效果越明顯

[root@xuegod63~]# ./ddos-test.sh???#檢查DDOS

????? 1 Address

????? 1 servers)

????? 2 192.168.1.6

?? 1003 192.168.1.63

?

總結(jié):

24.1? shell中的色彩處理

24.2? awk基本應(yīng)用

24.3? awk高級(jí)應(yīng)用

24.4? 實(shí)戰(zhàn)-shell腳本實(shí)戰(zhàn)

?

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市适揉,隨后出現(xiàn)的幾起案子留攒,更是在濱河造成了極大的恐慌,老刑警劉巖嫉嘀,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炼邀,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡剪侮,警方通過查閱死者的電腦和手機(jī)汤善,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來票彪,“玉大人红淡,你說我怎么就攤上這事〗抵” “怎么了在旱?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)推掸。 經(jīng)常有香客問我桶蝎,道長(zhǎng),這世上最難降的妖魔是什么谅畅? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任登渣,我火速辦了婚禮,結(jié)果婚禮上毡泻,老公的妹妹穿的比我還像新娘胜茧。我一直安慰自己,他們只是感情好仇味,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布呻顽。 她就那樣靜靜地躺著,像睡著了一般丹墨。 火紅的嫁衣襯著肌膚如雪廊遍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天贩挣,我揣著相機(jī)與錄音喉前,去河邊找鬼。 笑死王财,一個(gè)胖子當(dāng)著我的面吹牛卵迂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搪搏,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼狭握,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了疯溺?” 一聲冷哼從身側(cè)響起论颅,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎囱嫩,沒想到半個(gè)月后恃疯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墨闲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年今妄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盾鳞,死狀恐怖犬性,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腾仅,我是刑警寧澤乒裆,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站推励,受9級(jí)特大地震影響鹤耍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜验辞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一稿黄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跌造,春花似錦杆怕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撑碴,卻和暖如春撑教,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背醉拓。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工伟姐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亿卤。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓愤兵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親排吴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秆乳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 三劍客: grep sed awk grep 過濾 sed 過濾 取行 替換 修改文件內(nèi)容 vi/vim > >...
    張?chǎng)螡蒧2109閱讀 532評(píng)論 0 0
  • 系統(tǒng)巡檢腳本:Version 2016.08.09 ############################ 系統(tǒng)...
    NamasAmitabha閱讀 1,303評(píng)論 0 0
  • 一.基本介紹 1.awk: awk是一個(gè)強(qiáng)大的文本分析工具,在對(duì)文本文件的處理以及生成報(bào)表钻哩,awk是無可替代的屹堰。a...
    大福技術(shù)閱讀 1,662評(píng)論 1 4
  • 找出ifconfig命令結(jié)果中的1-255之間的數(shù)值; ifconfig eth0 |egrep -o '[0-9...
    張?chǎng)螡蒧2109閱讀 467評(píng)論 0 0
  • 一. AWK 說明 awk的處理文本和數(shù)據(jù)的方式:它逐行掃描文件街氢,從第一行到最后一行扯键,尋找匹配的特定模式的行,并...
    西華子閱讀 933評(píng)論 0 4